gpt4 book ai didi

php - 使用谷歌地图坐标寻找最近邻算法

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

请帮我找到一个通过坐标(纬度/经度)找到最近邻居的算法,我将使用 PHP 实现它

例如。我们有 1 个客户端和 2 个节点节点 1 = 32.9697, -96.8032 和节点 2=42.9697, -97.80322

每个节点都有自己给定的坐标(放置在 map 上)。

客户端会向系统发送经纬度坐标,系统会判断从客户端接收到的坐标是靠近节点1还是节点2

请原谅我的语法错误。希望得到您的友好回应。提前谢谢你

最佳答案

如果您只有有限数量的可能目标(正如我从您的问题中猜测的那样),您可以使用以下函数 ( copied from here ) 并遍历所有目标以找到最接近的目标。

function distance($lat1, $lng1, $lat2, $lng2, $miles = false)
{
$pi80 = M_PI / 180;
$lat1 *= $pi80;
$lng1 *= $pi80;
$lat2 *= $pi80;
$lng2 *= $pi80;

$r = 6372.797; // mean radius of Earth in km
$dlat = $lat2 - $lat1;
$dlng = $lng2 - $lng1;
$a = sin($dlat / 2) * sin($dlat / 2) + cos($lat1) * cos($lat2) * sin($dlng / 2) * sin($dlng / 2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
$km = $r * $c;

return ($miles ? ($km * 0.621371192) : $km);
}

如果您有许多可能的位置 (>=10^4),您应该以某种结构组织这些数据点,以便只需评估其中的一小部分。我建议 Quadtree为此,尽管它不适用于极点和基准边界。如果这种情况需要(我假设您不需要),我相信您会找到更好的解决方案。

关于php - 使用谷歌地图坐标寻找最近邻算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26758079/

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