【发布时间】:2012-12-24 21:45:48
【问题描述】:
我认为实际上不使用 LocationProvider 是不可能的,但我想看看是否有人有任何想法。
基本上我有一个应用程序,它有一个 PageView w/一个片段,其中包含一个新的 MapView 2.0
我可以通过 getMyLocation 从 GoogleMap 对象轻松获取我的位置。
我过去遇到过问题;在某些设备上,同时使用 NetworkLocation 和 GpsLocation 提供程序。因为我可以从 GoogleMap 中提取我的位置,所以我有一种简单的方法来检查我的位置。
我唯一的问题是我可以通过处理 onCameraChanged 来观察地图平移以更新地图,但它不处理地图内的位置变化。
我当前的实现是我有一个 MapView 和 LocationProvider.. 位置提供程序在服务中,并设置为根据用户确定的时间(1、5、10、15、30、60 秒)进行更新。活动通过 AIDL 连接到服务,如果连接的活动 >0,则启用 locationProvider,如果没有,则关闭。不过,这对谷歌地图确实没什么影响,如果我们不处理与谷歌地图相同的 GPS 信号丢失,我们得到的位置与谷歌地图不同。
我的 3 个选项中的第一个: 获取一个提供者,并将其传递给我可以在位置更改时获得回调的地方(并不是真的想这样做)。这将涉及通过 LocationSource..
第二个选项 获取我在当前服务中使用的当前位置提供程序,每次更新时,只需从地图中获取位置。我想这会起作用,但似乎有点多余,并且在屏幕关闭等时仍然存在管理 LocationProviders 的问题。(不必使用谷歌地图)
另一种选择是提供一个服务,该服务将一个接口传递给可以查询当前位置的地图对象。并且每隔 x 秒执行一次用户指示。我可以为此重用大部分服务,只需要设置它以继续调用。
我想到的另一件事可能只是使用被动提供程序来更新当前位置,而不是使用当前的 MapView。
我唯一的其他考虑因素是欺骗:我想尝试防止位置欺骗。我可以做到,所以我们不允许模拟位置。但这并不意味着它仍然不能被欺骗。
所以...任何想法将不胜感激。谢谢。
【问题讨论】:
-
有什么理由不使用
setLocationSource()将位置数据输入GoogleMap? -
我可以使用:GoogleMap 对象使用 activate(OnLocationChangedListener) 激活其位置提供程序。是的,我希望在 Google 地图中使用默认位置提供程序。处理人们打开/关闭提供程序,必须处理屏幕关闭等问题。我宁愿使用默认的.. 虽然我可以使用 setLocationSource(),(这是我的第一个选项 - 虽然写得不好)。
标签: android gps google-maps-mobile location-provider