【问题标题】:How to get nearest places (that are user entered) based on current location?如何根据当前位置获取最近的位置(用户输入的)?
【发布时间】:2013-02-12 14:38:02
【问题描述】:

我正在构建一个 Android 应用程序,用户可以在其中根据当前位置找到最近的地点,还可以将地点添加到数据库中。我知道我将不得不在我的数据库中使用 long 和 lat,但我真的不知道如何将当前位置与数据库中的位置进行比较。我什至如何搜索它,因为我可能必须系统地遍历整个数据库,提取每个地理点,然后将其与用户位置进行比较?

示例: 假设用户输入了伦敦的 10 个地方和世界各地的 1000 个其他地方,并且伦敦的一个人正在使用该应用程序并希望根据他们当前的位置找到离他们最近的地方。我将如何在数据库中的 1000 个其他地方中搜索这 10 个地方?不需要执行 distanceTo() 1000 次。

任何建议、指南、教程、参考资料都会很棒。

提前致谢。

编辑:

到目前为止,这是我的想法。

获取位置的经度和纬度,可能已经搜索到,当前位置或用户在屏幕上点击的位置。

使用所述位置的 Long/Lat - 使用 getFromLocation 方法从反向地理编码中获取该地点的地点描述。

使用地点描述,根据地址字符串搜索数据库。

这就是我现在所拥有的,但这似乎并不可靠。给定位置的经度/纬度,必须有一种更简单的方法来查询数据库并返回最近地点的完整列表。

【问题讨论】:

标签: java android google-maps location google-maps-android-api-2


【解决方案1】:

如果您使用纬度和经度,这应该很简单。假设个人的坐标大致是:49°N,2°E。

要查找纬度/经度为 1 平方度的所有位置,您只需选择满足以下条件的所有位置:

  • 纬度 >= 48°N 和

.. 和..

  • 经度 >= 1°E 和

【讨论】:

  • 谢谢,终于有建设性的回答了。这与 Google Maps/Android 返回的经度和纬度有何关系?我以doogal.co.uk/LatLong.php 为例来获取伦敦国王十字车站的一些地理点,返回的是:Long - 51.530884,Lat - -0.1229。
  • 到那时,我不能告诉你如何实现它。我唯一能告诉你的是你用来执行搜索的标准。我不熟悉 Google Maps API,所以我不知道具体的实现会是什么样子。
  • 尽管如此,它还是很有帮助的,现在我知道我有一些转换要做。谢谢。
【解决方案2】:

这很简单。

Wikipedia 上有一个表格说明十进制度是 1 公里等。您从 Google 收到的坐标是十进制度

https://en.wikipedia.org/wiki/Decimal_degrees

如果您对如何计算等有任何疑问,请询问:)

基本上你只需要检查地方纬度是否高于

currentLocationLatitude - rangeInDecimalDegrees

小于

currentLocationLatitude + rangeInDecimalDegrees

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 2011-07-20
    相关资源
    最近更新 更多