节选自《PHP经典实例》
/*
* $lat1, $lon1: 第一个点的经纬度
* $lat2, $lon2: 第二个点的经纬度
* $radius: 可选,默认为地球的半径
*/
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;
}
// 使用示例
$dist = sphere_distance(40.858704, -73.928532, 37.758434, -122.435126);
$formatted = sprintf("%2.f", $dist * 0.612);
print $formatted;