找到最近的Lng / Lat点(airdistance)

时间:2017-09-09 08:50:26

标签: google-maps math

我有一组多个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问题。

1 个答案:

答案 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加载。