常見問題01:計算地球上兩個點的距離

daqianmen發表於2021-09-09

原始碼:

場景

希望找到地球上兩個座標之間的距離

問題

由於地球不是平的,使用一個標準的勾股定理公式並不能得到兩個位置之間的準確距離。

解決方案

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

說明

sphere_distance()可以接受另一個球半徑作為第五個引數(可選),這允許你計算其它星球上兩點間的距離。

參考

《PHP經典例項》 David Sklar & Adam Trachtenberg



作者:Nosee123
連結:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1727/viewspace-2810840/,如需轉載,請註明出處,否則將追究法律責任。

相關文章