我有一组多个lng / lat点,我试图找到最接近我的原点lng / lat的点。我不需要计算任何距离,只能在airdistance中找到最接近我原点的点。
然而,我需要考虑是否有任何一组可能在Meridian的另一侧。
所以说我有我目前的数据:
$origin = array( "lat" => 52.3702157, "lng" => 4.8951679 );
$the_rest = array(
array( "lat" => 52.5200066,
"lng" => 13.404954
),
array(
"lat" => 48.856614,
"lng" => 2.3522219
)
);
我最初的想法只是循环遍历所有集合,并从我的原点做一个简单的lat / lng减法,看看哪个是最低的差异。但这没有考虑到Meridian问题。
答案 0 :(得分:0)
function airDistance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo){
$theta = $longitudeFrom - $longitudeTo;
$dist = sin(deg2rad($latitudeFrom)) * sin(deg2rad($latitudeTo)) + cos(deg2rad($latitudeFrom)) * cos(deg2rad($latitudeTo)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$meters = $dist * 111.18957696;
return $meters;}
这是在不使用谷歌地图的情况下在坐标系中获得距离的系统。 它更快,因为它没有从谷歌地图API加载。