【问题标题】:Android Map API 2.0 - callback that myLocation changed?Android Map API 2.0 - myLocation 更改的回调?
【发布时间】: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


【解决方案1】:

Google 引入了新的LocationClient 和关联的LocationListener(之前引入的OnMyLocationChangeListener 接口现已弃用)。

【讨论】:

  • 谢谢,忘了我问了这个问题。现在你的答案是正确的:)
猜你喜欢
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-03
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多