gpt4 book ai didi

algorithm - 如何通过 lat long 进行高效的多搜索点

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:18:31 25 4
gpt4 key购买 nike

我是 iOS 上的一款应用,其中包含 Trip Planner。例如,我正在使用 google direction API 获取从纽约到波士顿的路线。我有 50 个不同的经纬度来在 map 上制作折线。之后我需要在这条路线上找到我可以在去波士顿的路上参观的地方。

Google directions 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 数据库中搜索每个点以获得最近的位置:

selectid,title,type_id,service_id,latitude,longitude,state,city,zip,address,( 3959 * acos( cos( radians(31.72723) ) * cos( radians(latitude ) ) *cos( radians( longitude ) - radians(-106.3047)) + sin(radians(31.72723) ) * sin( radians(latitude ) ) ) ) AS distance fromplaces distance <= 10 order by distance ASC limit 10

但如果这次从纽约到旧金山的旅行,我将有 800 分,我将对数据库进行 800 次查询,总共需要超过 2 秒。我有 7 个不同的表,这将是 14 秒。

如果是,最好做什么?

Example

最佳答案

这是一种让它更快的方法:

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

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

(3) 然后在查询内部或外部按距离对这些点进行排序。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com