查找两点之间的距离(纬度/经度)

问题描述 投票:0回答:3

我对 Android 开发完全陌生。我在 MySQL 中有数千个地点及其纬度/经度。我想学习的是,如何根据设备位置找到最近的 10 个地点。

我知道 MySQL GeoSpatial 索引,使用它我可以找到与设备坐标最近的位置。但这并不是用户必须行驶的实际距离,对吧?实际路线可能比位移更长。

我可以使用 Google Distance Matrix API 根据实际路线获取距离,但是我将如何以及将哪些点传递给 Google API?如果我经过 1 个出发地和 10 个目的地,其中 8 个距离 200m,2 个距离更长,我会错过应该在列表中显示的其他 2 个条目。

请建议更好的方法是什么?

android mysql google-maps
3个回答
1
投票

尝试此链接。它显示最近的位置并检索列表中最近位置的地址

如果不使用这个,您将需要使用更多的数学计算,这将是很困难的。


1
投票

对于您的情况,没有简单的解决方案。我能想到的最好的建议是你提供超过 10 个最近点的查询,比如说 15 个,并从这 15 个结果中获得 10 个最佳答案。您需要优化请求数量(也许 12 或 17 就足够了)以获得最佳结果。请求数量越多,获得准确结果的可能性就越大,但性能也越低。所以你需要找到一个适当的平衡点。除此之外我想不出任何其他合理的解决方案。


0
投票

你很少将这些东西基于实际路线。我有一个消费者 GPS 设备 - 它给我的路线总是比 POI 屏幕上列出的距离多几英里,因为它只是在那里进行直线距离。实际上计算路线会非常昂贵 - 请注意,当您点击谷歌地图上的导航按钮时,需要几秒钟的时间来进行一次路线查找。所以我想说只使用坐标,其他人都是这么做的。

© www.soinside.com 2019 - 2024. All rights reserved.