map.setMyLocationEnabled(true) 的真正作用是啥

Posted

技术标签:

【中文标题】map.setMyLocationEnabled(true) 的真正作用是啥【英文标题】:What does map.setMyLocationEnabled(true) really domap.setMyLocationEnabled(true) 的真正作用是什么 【发布时间】:2014-04-26 12:33:48 【问题描述】:

我正在设置:

map.setMyLocationEnabled(true)

但我想知道这到底是做什么的。我所知道的:

    我在地图右上角有一个“定位我”按钮 我在地图上看到代表我当前位置的蓝色图标

这是我的担忧。我正在编写一个位置感知应用程序,但我担心电池。在我的应用程序的其他地方(通过首选项)我设置了一个 LocationManager 并监听位置事件,以便我可以记录它们。但我的部分偏好是我获得更新的准确性和间隔。

当我关闭 LocationManager 时:

locationManange.removeUpdates(LocationListener listener);

我希望关闭整个应用的定位服务。然而,我仍然在我的手机标题栏中看到小 GPS 图标,表明该应用正在获取位置更新。我知道这是因为我在地图视图上设置了它:

map.setMyLocationEnabled(true);

我最初认为,如果您不通过设置设置 map.setMyLocationEnabled(true) 的 LocationManager 来侦听位置更新,将没有效果(即没有我的位置图标或按钮)。然而事实并非如此。

这是否意味着通过调用 map.setMyLocationEnabled(true) google 正在使用自己的设置设置自己的 LocationManager?我真的很想调用 map.setMyLocationEnabled(true),但让它使用我的位置更新设置,而不是谷歌在幕后所做的任何事情。那可能吗?我错过了文档中的某些内容吗?当我调用 map.setMyLocationEnabled(true) 时,我找不到关于 LocationManager 上设置的准确性或间隔的任何信息。

【问题讨论】:

在您致电removeUpdates() 之后,您确定GPS 更新不是由于其他应用程序造成的吗? (例如谷歌地图本身,或其他任何东西)。您是否在卸载应用时尝试过此操作? 是的,我确定。如果我删除一行代码'map.setMyLocationEnabled(true);' GPS 已关闭。 【参考方案1】:

这是否意味着通过调用 map.setMyLocationEnabled(true) google 正在使用自己的设置设置自己的 LocationManager?

不完全是。 Maps V2 默认uses LocationClient

我真的很想调用 map.setMyLocationEnabled(true),但让它使用我的位置更新设置,而不是谷歌在后台所做的任何事情。这可能吗?

您可以use setLocationSource() 提供您自己的位置数据以用于 my-location 层。 Here is a sample project 展示了这一点。

【讨论】:

您的示例还设置了 LocationManager。可以在代码的其他地方设置 LocationManager 吗?在我的地图代码中,我实现了除了位置管理器之外的所有内容,但我从未获得位置更新。基本上我还有其他实现 LocationListener 并设置 LocationManager 的代码,因为我也在地图视图之外获得了位置更新。 我想我知道我需要做什么。它应该工作。我明天会发布我的代码,以防其他人有类似的问题。谢谢@CommonsWare @lostintranslation: "LocationManager 可以在代码的其他地方设置吗?" ——原则上,当然。我只是没有任何其他代码。 :-) 只要您可以在需要时将位置转移到您的GoogleMap,那么在您的代码中您拥有LocationListener 的位置真的没关系。例如,您可以使用事件总线(例如,LocalBroadcastManager、Square 的 Otto、greenrobot 的 EventBus)。 @AviPatel:使用 LocationManager 或 Play Services 的融合位置提供程序来获取设备的位置。然后,使用GoogleMap 上的方法移动“相机”以将地图指向该位置。 @AviPatel:AFAIK,Google 希望您使用融合位置提供程序,这就是他们弃用并停止使用 getMyLocation() 选项的原因。

以上是关于map.setMyLocationEnabled(true) 的真正作用是啥的主要内容,如果未能解决你的问题,请参考以下文章

android studio map.setMyLocationEnabled(true) 中的错误 getMap();

android中当前位置的准确经纬度