在《PHP经典实例》书中看到非常有意思的一个代码实例、就是根据经纬度计算距离的代码、当但实际是有点误差的。误差大概在0.5%左右。

function sphere_distance($lat1,$lon1,$lat2,$lon2,$radius=6378.135){
    $rad=doubleval(M_PI/180.0);
    $lat1=doubleval($lat1)*$rad;
    $lon1=doubleval($lon1)*$rad;
    $lat2=doubleval($lat2)*$rad;
    $lon2=doubleval($lon2)*$rad;
    $theta=$lon2-$lon1;
    $dist=acos(sin($lat1) *sin($lat2)+cos($lat1)*cos($lat2)*cos($theta));
    if($dist<0){$dist+=M_PI;}
    return $dist=$dist * $radius;
}

$lat1=39.735616;   //纬度
$lon1=116.378685; //经度/
$lat2=47.72737363170936;
$lon2=128.89125823975863;
$dist=sphere_distance($lat1,$lon1,$lat2,$lon2);
//$formatted=sprintf("%.2f",$dist*0.621); 英里
$formatted=sprintf("%.2f",$dist*0.621)*1.609344; //公里
var_dump($formatted);
Last modification:January 2, 2020
如果觉得我的文章对你有用,请随意赞赏