使用 FusedLocationApi 获取离线位置

Posted

技术标签:

【中文标题】使用 FusedLocationApi 获取离线位置【英文标题】:Fetch offline location using FusedLocationApi 【发布时间】:2016-04-24 21:36:28 【问题描述】:

我想在 GPS/Wifi 关闭时使用 google play services LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 获取位置。阅读有关FusedLocationApi 的文章/博客,它提到此API 将使用任何GPS/Wifi 或蜂窝网络提供准确的位置。我很困惑,如果地窖网络可以提供位置,那么FusedLocationApi 应该在 Gps/Wifi 被禁用但返回null 的情况下返回位置。谁能让我帮助/指导使用蜂窝网络获取离线位置。

问候

【问题讨论】:

您的Location 是否在设置中启用。如果它被启用,那么只有你会得到位置,否则它将返回 null。 已禁用。如果它只在设置中使用Location 启用,那么说FusedLocationProvider 将从蜂窝塔获取位置的目的是什么 【参考方案1】:

当 GPS 和 WiFi 位置被禁用时,您无法使用蜂窝网络通过标准 API 获取位置。

设备必须启用位置才能让应用程序检索位置。这是最终用户的基本权限问题;如果最终用户请求没有可用的位置,则没有可用的位置。

在检索位置时,有两种信息来源:

    GPS:这使用太空中的卫星来定位设备。 GPS 可提供最准确的位置,但速度较慢,尤其是在您没有数据连接的情况下。在设备上,这是“仅限设备”模式。

    Network:这使用 WiFi 和/或蜂窝网络。无法分别选择 WiFi 和蜂窝位置。当您获得位置更新时,水平精度是使用 WiFi 还是蜂窝网络的有力指标。 WiFi 精度应该是 10 米,而蜂窝网络可能是 100 米。如果您所在的区域没有 WiFi 覆盖但有蜂窝网络覆盖,则网络源仍将提供位置更新。

您也可以同时使用这两种来源。这是“高精度”定位模式。

如果您同时关闭这两个功能(禁用位置信息),您将无法获得任何位置信息。

【讨论】:

这一点很重要,如果用户明确关闭了设置,APIs 将不起作用。如果我们的应用程序需要某些功能的位置,那么如果位置被禁用,我们可以限制该用户的使用。

以上是关于使用 FusedLocationApi 获取离线位置的主要内容,如果未能解决你的问题,请参考以下文章

FusedLocationApi 连接后如何获取位置?

使用 fusedlocationapi 获取位置,而无需在一段时间后请求位置更新

可以使用 Android 的 FusedLocationApi 获取新数据(确切的当前位置)吗?

等到 GPS 启用,然后在 FusedLocationAPI 中获取 lat 和 long 值

没有使用 fusedLocationAPI.requestLocationUpdates 调用 onLocationChanged

为啥 FusedLocationApi.getLastLocation 为空