Android - LocationManager的位置与GoogleMaps不同

时间:2013-05-29 20:04:35

标签: android google-maps-android-api-2 locationmanager

我已使用此代码通过'LocationManager'创建了一个位置监听器:

mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 100, 100, mListenerNetwork);

和听众:

LocationListener mListenerNetwork = new LocationListener() {
    public void onLocationChanged(Location location) {
        // New Location by LocationManager
    }

    public void onProviderDisabled(String provider) { }

    public void onProviderEnabled(String provider) { }

    public void onStatusChanged(String provider, int status, Bundle extras)  { }
}

我有谷歌地图API的听众:

getMap().setOnMyLocationChangeListener(this);

和听众:

public void onMyLocationChange(Location location) {
    // New Location by GoogleMaps       
}

当我调试应用程序时,我注意到侦听器中的位置不同!更重要的是,位置的准确性非常不同。 Google地图的准确度是LocationManager准确度的一半(越少越好) 为什么地点如此不同?

2 个答案:

答案 0 :(得分:5)

GoogleMaps很可能正在使用新的LocationClient API,该API已在Google I / O 2013上公布。您可能也希望切换到此API。

据说更精确,使用更少的电池。

有关如何获取位置更新的更多信息:http://developer.android.com/training/location/receive-location-updates.html

答案 1 :(得分:0)

您对requestLocationUpdates的调用仅从网络位置提供程序(LocationManager.NETWORK_PROVIDER)请求位置更新。网络位置提供商使用蜂窝塔和WiFi信号来确定位置。还有一个GPS定位提供商(LocationManager.GPS_PROVIDER),它使用GPS卫星,并且在卫星可用时更加准确。 Google地图最有可能使用两个位置提供商的组合来确定最准确的位置。

请查看本指南,了解如何更好地了解根据您的需求使用Android定位服务的最佳方式:http://developer.android.com/guide/topics/location/strategies.html