我是 iOS 上的一个应用程序,它有 Trip Planner。
例如,我使用谷歌方向 API 来获取从纽约到波士顿的路线。
我有 50 个不同的纬度经度可以在 map 上制作折线。
之后,我需要在这条路线上找到我可以在去波士顿途中参观的地方。
谷歌路线 API 给了我:

latitude = "30.308399"; longitude = "-89.748299";
latitude = "30.310930"; longitude = "-89.818604";
latitude = "30.350050"; longitude = "-89.916054";
latitude = "30.432850"; longitude = "-90.098549";
....
现在,我在 mysql 数据库中搜索每个点以获得最近的位置:

但是如果这次从纽约到旧金山,我将有 800 点,我会向数据库进行 800 次查询,总共需要 2 秒以上。我有 7 个不同的表,这将是 14 秒。
万一最好怎么办?

最佳答案

这是加快速度的一种方法:

(1) 在表中放入经纬度索引。

(2) 在查询中,首先只选择路径上点的水平和垂直距离内的那些地方,足够接近有趣。按纬度范围和经度范围选择。

(3) 然后按距离对这些点进行排序,无论是在查询内部还是外部。

关于algorithm - 如何通过经纬度进行高效的多搜索点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14973537/

10-16 20:00