【问题标题】:Location-aware geocoding on Android (just like Google Maps)Android 上的位置感知地理编码(就像 Google 地图一样)
【发布时间】:2011-01-11 02:31:31
【问题描述】:

Google 地图应用中的搜索似乎是位置感知。例如,如果我在悉尼搜索“Pitt St”,它会立即找到正确的街道。点击“您的意思是...”会显示附近郊区的其他“Pitt St”列表。

有没有办法在我们的应用中获得类似的体验?我尝试了标准的Geocoder,但类似的搜索返回“Pitt St, New York”作为第一个匹配项。

  • 我是否缺少一组选项?
  • 我们可以为此使用不同的 API 吗?
  • 作为最后的手段,您认为手动实现这一点是否合理,例如通过查询最大半径为 1km、10km、100km 的 Geocoder,然后按距离对结果进行排序?

干杯

罗曼

【问题讨论】:

    标签: android google-maps location geocoding


    【解决方案1】:

    您使用了哪个功能? Geocoder.getFromLocationName() 带有一个边界框,可让您将结果限制在某个区域,因此您可以先获取当前 GPS 位置并将其传入。

    或者,您可以通过Geocoder API,它更灵活,但在 TOS 方面也更具限制性,更不用说使用更多工作了。 (我不确定从 Android 应用程序中使用它是否包含在 TOS 中,我没有看太多)。

    【讨论】:

    • 我正在使用 getFromLocationName(String locationName, int maxResults)。我想过传入一个区域,但它提出了很多问题,例如:什么时候停止搜索,什么时候增加区域,按距离或准确度对结果进行排序?
    • 非常感谢有关其他 API 的链接,我将看看它返回的结果类型。我很好奇 Google Maps 应用程序是如何做到的,以及它使用了哪个 API。
    • 好吧,即使您的 GPS 信号偏离 100 英里,Syndey 的 Pitt St 也将击败纽约的 Pitt St。所以获取信号,使用一个非常大的边界框,然后得到结果。 (信号的偏离通常不会超过 1 - 1.5 英里,您可以获得它的准确性)。得到结果后,按距离对它们进行排序。这在大多数情况下应该有效。
    • 这听起来很合理。我希望得到类似 getFromLocationName(String locationName, GeoPoint closeTo) 的东西,但除非有人听说过这样的库,否则我可能会按照你的方式实现它。干杯!
    • 嗯,在一个点周围使用边界框与“接近”基本相同,您只需要在获得结果后手动按到该点的距离对结果进行排序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多