1. 程式人生 > >地圖上兩個位置間的距離

地圖上兩個位置間的距離

        /**
         * 計算球體上表面兩點的距離
         * 由於地球並不是數學意義上的球體,因此用些方法只能得到近似的距離值,
         * 與實際情況的誤差最大可能達到0.5%
         * 
         * @param float $lat1 位置1緯度,南緯時是負值
         * @param float $lon1 位置1經度,西經是是負值
         * @param float $lat2 位置2緯度,南緯時是負值
         * @param float $lon2 位置2經度,西經是是負值
         * @param float $radius 球體半徑,單位km,預設為地球半徑
         * @return float 兩地球面距離,單位km
         * */
function getDistance($lat1, $lon1, $lat2, $lon2, $radius = 6378.137) { $rad = doubleval(M_PI / 180.0); $lat1 = doubleval($lat1) * $rad; $lon1 = doubleval($lon1) * $rad; $lat2 = doubleval($lat2) * $rad; $lon2 = doubleval($lon2)
* $rad; $diff = $lon2 - $lon1; $dist = acos(sin($lat1) * sin($lat2) + cos($lat1) * cos($lat2) * cos($diff)); if ($dist < 0) $dist += M_PI; return $dist * $radius; } // 39.9096915,116.3958814 天安門 // 23.10409,113.3265492 小蠻腰
echo getDistance(23.0104611, 113.7477255, 39.9096915, 116.3958814); //1897.6869041879

例如測算廣州小蠻腰到天安門間的距離,由上面演算法得出現在距離為1897.69公里,而在高德地圖上實測兩點距離為1892.67公里,誤差還算在可以接受的範圍。
小蠻腰到天安門距離

(end)