带有mapview的Google地图和应用有不同的当前位置

Mat*_*adt 8 android google-maps android-maps

我有一个mapview,我想跟踪用户的当前位置.我的手机设置中激活了GPS以及"使用无线网络".然而,由于我在室内,我没有得到GPS定位,因此位置是通过网络确定的; wifi点可用.

我正在运行Google地图应用以及我的应用运行.

奇怪的是,谷歌地图和我的应用程序之间的当前位置不同,谷歌地图非常准确,而在我的应用程序中,位置不知何故离开了几百米.

在我的应用程序中,我基本上执行以下操作(现在用于调试目的):

1)最初在地图上放置一个标记:通过检索到的geopoint locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

2)最初在地图上放置另一个标记:通过检索到的geopoint locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

这会将两个提供者的最后已知位置放在地图上(最终从我的应用程序外部知道).

3)然后定期更新(因为我在这里室内没有获得GPS修复),我这样做:

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, baseLocationListener);
Run Code Online (Sandbox Code Playgroud)

在两种情况下,您都可以看到我传递0参数的频率和距离.

在应用清单中,授予以下权限:

android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_MOCK_LOCATION
Run Code Online (Sandbox Code Playgroud)

实际上我的baseLocationListener确实被调用,我在日志中看到了,但更新的位置与上一个已知的当前位置(LocationManager.NETWORK_PROVIDER)相同,相同的纬度/经度.

我想也许我忽略了某些东西或错过了参数或设置,或者我的代码有错误.因此,我在Android市场安装了一些其他(总共3个)LBS应用程序,这些应用程序也显示当前用户的位置.这些应用程序中显示的当前位置等于我的应用程序中的位置 - 它们都是100米关闭 - 但至少完全相同.

请看截图: 截图http://img33.imageshack.us/img33/8679/mapproblem.png

http://img33.imageshack.us/img33/8679/mapproblem.png

现在我想知道:

1)据我所知,getLastKnowLocation是系统范围而不是应用程序范围,为什么Google地图中的位置与所有其他应用程序之间存在差异?

2)Google Maps不会更新提供商的lastKnownLocation吗?

3)Google地图是否使用了除GPS_PROVIDER或NETWORK_PROVIDER之外的其他自定义位置提供商(即由于许可原因),因为它们在SDK中?

4)如何使用像Google Maps这样的NETWORK_PROVIDER实现同样准确的结果呢?

Mat*_*adt 2

我想我找到了答案,尽管不是解决方案。问题似乎出在 SDK 中用于 Google Maps 和 MapView 的不同地图提供商的数据质量不同。

地图图块坐标似乎不是很准确,就像公共谷歌地图 Web api / 图块中一样。

请参阅此屏幕截图作为示例,其中我固定了相同的地理点。 截图 http://img339.imageshack.us/img339/2793/gmaps2.png http://img339.imageshack.us/i/gmaps2.png/

使用公共地图 API 的地图偏离几百米。看来我们只能忍受它了?!:(