2

我使用以下代码通过“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 Maps 中的准确性是 LocationManager 中准确性的一半(越少越好)。
为什么位置如此不同?

4

2 回答 2

5

GoogleMaps 很可能正在使用新的LocationClientAPI,这是在 2013 年 Google I/O 上宣布的。您可能也想切换到这个 API。

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

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

于 2013-05-30T09:31:43.160 回答
0

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

查看本指南,以更深入地了解利用 Android 定位服务满足您的需求的最佳方式:http: //developer.android.com/guide/topics/location/strategies.html

于 2013-05-29T21:18:08.067 回答