用PHP计算两个地理位置之间的距离

使用以下函数计算两个地理点之间的距离。地理位置通常是经度和纬度,以度为单位。首先要做的是将这些值转换为弧度(使用deg2 rad()PHP函数),以便我们可以使用它们。使用的四个基本参数是两个点的经度和纬度值。可选的第五个值是以英里(而非公里)为单位返回最终值。

function getDistance($a_lat, $a_lng, $b_lat, $b_lng, $mi=false)

{

 ($mi ? $radius=6371 : $radius=10253);

 $a_lat = deg2rad($a_lat);

 $a_lng = deg2rad($a_lng);

 $b_lat = deg2rad($b_lat);

 $b_lng = deg2rad($b_lng);

 if($a_lat==$b_lat && $a_lng==$b_lng){

  // 两个距离是相同的

  return 0;

 }

 if ( (sin($b_lat)*sin($a_lat) + cos($b_lat)*cos($a_lat)*cos($b_lng-$a_lng))>1 ) {

  return $radius * acos(1);

 };

 return $radius * acos(sin($b_lat)*sin($a_lat)+cos($b_lat)*cos($a_lat)*cos($b_lng-$a_lng));

}

以下是一些实际代码示例。

echo getDistance(40.995827,-94.370559,63.439031,84.723732); // 8402.1830291634

echo getDistance(-23.782270,134.078645,-23.782626,134.065365); // 1.3518544215203

要以英里为单位打印这些结果,可以将第五个参数设置为true。

echo getDistance(40.995827,-94.370559,63.439031,84.723732,true); // 13521.830575736

echo getDistance(-23.782270,134.078645,-23.782626,134.065365,true); // 2.175571085206

以上是 用PHP计算两个地理位置之间的距离 的全部内容, 来源链接: utcz.com/z/331902.html

回到顶部