我的Android应用程序中有一个位置监听器,它将以5秒和10米的间隔请求更新:
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000,10);
我会按照预期的方式通过我的监听器的onLocationChanged()
方法收到通知。然而奇怪的是,我注意到当我在家时,检索到的坐标距离大约半个街区。这非常一致。是的,我有GPS。如果我打开谷歌地图,我会注意到它最初将显示我的应用报告坐标的位置,但在几秒钟内将移动到我的实际位置。
谷歌地图是应用某种GPS定位到坐标还是什么?我是否需要做一些比简单听取更新更复杂的事情。我之前没有这样做过,所以这对我来说都很新鲜。
还要注意我有Endomondo
跟踪你跑步的地方,它似乎也能得到非常准确的结果......例如我开始了,走出街道大约半个街区并回来了,它完美地绘制了它。我需要做些什么才能获得更准确的报告?
答案 0 :(得分:3)
是的,Google地图不仅仅依靠您的GPS来确定您的实际位置。确切地说,Google依赖于蜂窝电话天线(CellID)和Wi-Fi接入点天线之间的无线电多点定位(参见:locationManager.NETWORK_PROVIDER)。
使用这些辅助信息来源,Google可以确定您的位置,即使在您的GPS无法可靠工作的建筑物内,以及在户外情况下,由于某种原因,GPS无法提供任何帮助(在纽约)例如,摩天大楼创造的“峡谷效应”使GPS不起作用。)
而且,是的:除了阅读位置更新之外,还有更多要考虑的因素。
您应该阅读Android Location Manager文档,特别是专门针对location providers和location strategies的部分,以了解有关Google位置功能的更多信息。另见:Location and Maps。
答案 1 :(得分:1)
这种行为是完全正常的,因为当您在室内/室外时GPS准确度会发生变化..
...Although GPS is most accurate, it only works outdoors,
it quickly consumes battery power, and doesn't return the location as quickly
as users want...
您还可以使用此链接Location Strategies中提供的示例代码..此链接将有助于了解位置管理的工作原理,它还包含良好的可用示例代码