1

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

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

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

提前致谢。

编辑:

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

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

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

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

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

4

2 回答 2

2

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

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

  • 纬度 >= 48°N 和 <= 50°N

.. 和 ..

  • 经度 >= 1°E 和 <= 3°E
于 2013-02-12T16:02:10.390 回答
0

这很简单。

维基百科上有一张表格,解释了1 公里等十进制度。您从 Google 收到的坐标是十进制度

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

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

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

currentLocationLatitude - rangeInDecimalDegrees

并且小于

currentLocationLatitude + rangeInDecimalDegrees
于 2020-08-10T06:49:09.033 回答