获取位置使用getLastKnownLocation()无法获得正确的位置

时间:2016-04-30 22:33:34

标签: android google-maps android-maps-v2

我正在开发处理Google Maps Api的Android应用程序,我尝试使用mMap.getLastKnownLocation();获取当前位置,然后获取latitudelongitude该'传递给将相机移动到我位置的方法

这是获取我的位置的一部分

    Criteria criteria = new Criteria();
  Location location = locationManager.getLastKnownLocation(locationManager
            .getBestProvider(criteria, false));

    if( location != null ){
        double latitude = location.getLatitude();
        double longitude = location.getLongitude();
        AddMarkerAndMoveCamera(latitude,longitude);
        Toast.makeText(MapsActivity.this, "Latitude: " + latitude + "\nLongitude: " + longitude,Toast.LENGTH_LONG ).show();
    }

这是移动相机的一部分

 public void  AddMarkerAndMoveCamera(double lat,double lng)
{
    LatLng MyLocation = new LatLng(lat, lng);
    mMap.addMarker(new MarkerOptions().position(MyLocation).title("This is Your Location ! Now !"));
    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(MyLocation,15));


}

这是我在应用程序运行时获得的。 my marker position and my real position

如果有任何关于我如何获得真实位置的信息,不仅仅是lastknownlocation ,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

  

获取位置getLastKnownLocation()无法获得正确的位置

因为它在此方法中获取了传递的提供者的最后已知位置。

你需要新鲜的位置。为此,check this link

修改

在上面的链接中实现所需的东西之后,你可以做这样的事情。

@Override
public void onLocationChanged(Location location) {
    double latitude = location.getLatitude();
    double longitude = location.getLongitude();
    AddMarkerAndMoveCamera(latitude,longitude);
    Toast.makeText(MapsActivity.this, "Latitude: " + latitude + "\nLongitude: " + longitude,Toast.LENGTH_LONG ).show();
 }