当getLastLocation时间修复旧时如何获取位置一次

Posted

技术标签:

【中文标题】当getLastLocation时间修复旧时如何获取位置一次【英文标题】:How to get location one time when getLastLocation time fix is old 【发布时间】:2015-12-05 09:57:50 【问题描述】:

我正在使用谷歌播放服务位置 API。我希望能够一次获取用户的当前位置,而不是监听更新。我目前正在使用 getLastLocation 来获取用户最后一个已知位置。然后我正在检查时间修复,如果时间修复超过一分钟,那么我想请求LocationUpdate,但只有一次意味着我想获取当前位置而不是监听更新。

我看过很多关于只获取最后一个已知位置的教程和很多关于监听位置更新的教程,但我似乎找不到目前查询用户位置的最佳做法(例如单击按钮时)

我有 google play services location api 在应用程序中工作,并且 onConnect 也被正确调用。以下是我在 onConnect 方法中的内容

pusedo 代码:

if location.getTime() < 1000 * 60 then 
//get the coordinates
else
//TODO query for current user location

我应该在 TODO 部分放置什么来查询用户位置?

【问题讨论】:

【参考方案1】:

您应该实现接收位置的完整逻辑。这是文档https://developer.android.com/training/location/receive-location-updates.html

【讨论】:

我已经这样做了。只是想知道获取位置更新并在足够准确以供我的应用程序使用时停止的最佳方法是什么。 我需要获取一组坐标并使用它来查询 api。我不想听位置变化。一旦我收到准确的修复,我想用它来查询 api。这不是一个跑步跟踪应用程序,它更像是在图片上进行地理标记。 只需在第一个onLocationChanged()回调中调用LocationServices.FusedLocationApi.removeLocationUpdates( mGoogleApiClient, this); 是的,我也在考虑这个问题。我想知道调用该方法的最佳时间是什么时候。我在想当修复的准确性在一定范围内时我会调用它。 在每次回调中,您都会收到新的 Location 对象,您可以检查其准确性

以上是关于当getLastLocation时间修复旧时如何获取位置一次的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 LocationServices.FusedLocationApi.getLastLocation() 何时不为空?

getLastLocation API 如何在内部工作?即使位置设置为 ON,它也会返回 null

带有 .getLastLocation() FusedLocationProviderClient 的位置数据为空

为啥 fusedLocationProviderClient.getLastLocation 从不调用 OnSuccessListener?

getLastLocation() 是不是请求当前位置?

Android LocationClient.getLastLocation() 返回带有新时间戳的旧且不准确的位置