用PHP计算两个地理位置之间的距离
使用以下函数计算两个地理点之间的距离。地理位置通常是经度和纬度,以度为单位。首先要做的是将这些值转换为弧度(使用deg2rad()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