我已使用此代码通过'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准确度的一半(越少越好) 为什么地点如此不同?
答案 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