【问题标题】:location using GPS android使用 GPS 安卓定位
【发布时间】:2014-04-22 16:19:16
【问题描述】:

我正在尝试确定当前的地理位置,我使用了以下代码,但到目前为止我没有得到任何东西:

public class Activity_map extends FragmentActivity implements LocationListener {
public  double latituteField;
public  double longitudeField;
  private GoogleMap map;
  private LocationManager locationManager;
  LatLng pos;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gmap);
 loc   ationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
     Criteria criteria = new Criteria();
    provider = locationManager.getBestProvider(criteria, false);
    Location location = locationManager.getLastKnownLocation(provider);
    if (location != null) {
      System.out.println("Provider " + provider + " has been selected.");
      onLocationChanged(location);
      map.addMarker(new MarkerOptions().position(pos).title("MY POSITION").snippet("GPS")
                .draggable(true));
    } else {
      latituteField=0;
      longitudeField=0;
      }
     FragmentManager myFragmentManager = getSupportFragmentManager();
    SupportMapFragment myMapFragment 
       = (SupportMapFragment)myFragmentManager.findFragmentById(R.id.map);      

    map = myMapFragment.getMap();
    }

  @Override
  protected void onResume() {
    super.onResume();
    locationManager.requestLocationUpdates(

            LocationManager.GPS_PROVIDER,5000,10,this);
      }
      @Override
  protected void onPause() {
    super.onPause();
    locationManager.removeUpdates(this);
      }

  public void onLocationChanged(Location location) {
    double lat = (double) (location.getLatitude());
    double lng = (double) (location.getLongitude());
   pos= new LatLng(lat,lng);


  }

  public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

  }

  public void onProviderEnabled(String provider) {
      Toast.makeText(this, "Enabled new provider " + provider,
                Toast.LENGTH_SHORT).show();

  }

  public void onProviderDisabled(String provider) {
      Toast.makeText(this, "Disabled provider " + provider,
                Toast.LENGTH_SHORT).show();
  }
      }

问题是我没有得到任何标记.. 我试图这样做,但我有不止一个标记

public void onLocationChanged(Location location) {
    double lat = (double) (location.getLatitude());
    double lng = (double) (location.getLongitude());
        pos=new LatLng(lat,lng);
          map.addMarker(new MarkerOptions().position(pos).title("MY POSITION").snippet("GPS")
            .draggable(true));
       }

任何帮助将不胜感激,谢谢

【问题讨论】:

  • 是的,我的地图没有任何问题
  • 好的..请尝试我的答案..@choco
  • 你确定你的 onLocationChanged() 被调用了吗???

标签: android google-maps gps geolocation


【解决方案1】:

您还没有为标记指定任何图像..所以像这样添加它..

map.addMarker(new MarkerOptions().position(pos).title("MY POSITION").snippet("GPS").icon(BitmapDescriptorFactory.fromResource(R.drawable.yourmarkericon)));

onCreate() 中删除您的标记,因为它在活动创建时仅被调用一次..

onLocationChanged() 中添加标记或在函数中添加标记并在onLocationChanged() 中调用该函数

【讨论】:

  • 我不认为这是问题所在,它应该可以在不指定图像的情况下工作
  • 哎呀!我打字时犯了一个错误,我已经编辑了! lat 和 lng 是当前位置的经纬度。
  • 你在哪里写了添加标记的代码??是在 onLocationChanged() 里面还是在 onCreate() 里面??
  • 当我把它写在 onLocationChanged() 里面时它可以工作,但是它显示了不止一个标记,当我把它写在 onCreate() 里面时它没有显示任何想法
  • 如果你在 onCreate() 中写入它会如何显示它,因为位置不会在活动创建时改变..onCreate() 只调用一次..
猜你喜欢
  • 1970-01-01
  • 2015-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多