【问题标题】:Google Place SDK gives wrong current place detailGoogle Place SDK 提供了错误的当前地点详细信息
【发布时间】:2019-02-23 12:54:56
【问题描述】:

在我的应用程序中,我有一个需求,我需要跟踪用户的当前位置并在他/她停留一段时间时通知用户。 为此,我使用 Google 的地点 SDK 来获取当前地点的详细信息,reference link 但问题是输出。

如果我使用优先级为 PRIORITY_HIGH_ACCURACYPRIORITY_BALANCED_POWER_ACCURACY 的位置服务,Place SDK 的输出对于同一位置是不同的。

我的位置请求如下:

LocationRequest mLocationRequest = new LocationRequest();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
// or
// mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
mLocationRequest.setInterval(1000);
mLocationRequest.setFastestInterval(1000);

正如上面链接中提到的,我们没有任何选项来传递当前的经纬度,因为 SDK 自己管理它。

那么任何人都可以帮助我如何从 Place SDK 获得更准确的输出。

background service的示例代码

【问题讨论】:

  • 您不能将位置检索为 LatLng 并检查用户是否停留在给定的半径内而不是使用 Places API 吗?
  • 在我的项目中,我需要使用地点详细信息,例如地点 ID、名称、地址等。
  • 确切地说,在您需要使用地点详细信息的地方,您将使用地点详细信息。但这不是最好的解决方案,您应该检查位置如何随时间变化

标签: android google-places-api google-maps-android-api-2 google-places


【解决方案1】:

正如documentation 所述,您可能应该迁移到GoogleApi Client

虽然返回了两个不同的结果,但应该有不同的PlaceLikelihood

事实上,请求的位置越不精确,返回的位置就越不准确。

对于LocationRequest,甚至没有PRIORITY_BALANCED,而只有一个PRIORITY_BALANCED_POWER_ACCURACY 常量可用 - 设置此值时,请求间隔将被自动限制,无论您尝试将其设置为什么间隔。

另见FusedLocationProviderClient

【讨论】:

  • 我使用 FusedLocationProviderClient 进行位置更新。
  • @Mehta 尝试记录返回的位置,因为 Places API(或 GoogleApi 客户端)将显示不同的结果,因为正在请求两个不同的位置。 “块级”精度并不是真正的 GPS 修复。这可能取决于人们在哪里提出要求——有时结果甚至可能非常相似。输出将始终取决于输入。
  • 真的。但是在 Place SDK 中,我们没有任何规定可以传递当前的经纬度。 PlaceDetectionClient 本身会向设备发出获取当前位置的请求,在获取当前位置后,它会给出一个地点列表
  • @Mehta API 将具有“附近搜索”功能,允许通过坐标进行查找 - 使用 Places SDK,您无法选择这样做(即使这可能看起来有问题)。例如,请参阅此答案:stackoverflow.com/a/31035938/549372
  • 让我试试这个附近的搜索 API
猜你喜欢
  • 1970-01-01
  • 2015-08-21
  • 2012-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-07
  • 2018-07-02
相关资源
最近更新 更多