PHP經過經緯度計算距離

SQL語句查詢並計算距離php

$lat = 40.003661; // 當前緯度 緯度最高90
$lng = 116.326510; // 當前經度
// latitude 緯度
// longitude 經度
$page= $page> 0 ? $page - 1 : $page;
$distance = "(2 * 6378.137* ASIN(SQRT(POW(SIN(3.1415926535898*(" . $lat . "-latitude)/360),2)+COS(3.1415926535898*" . $lat . "/180)* COS(latitude * 3.1415926535898/180)*POW(SIN(3.1415926535898*(" . $lng . "-longitude)/360),2))))*1000";
$sql = "select *," . $distance . " as juli from About where " . $where . " order by juli ASC, addtime DESC limit " . $page. "," . $limit;
$arr = Db::query($sql);
$count = count($arr);

php自定義函數計算距離git

/*
 * 地圖計算距離
 *  $lat1:起點緯度
 *  $lng1:起點經度
 *
 *  $lat2:終點緯度
 *  $lng2:終點經度
 * */
function TX_Map_Api_distance($lat1, $lng1, $lat2, $lng2)
{
    // 將角度轉爲狐度
    $radLat1 = deg2rad($lat1); // deg2rad()函數將角度轉換爲弧度
    $radLat2 = deg2rad($lat2);
    $radLng1 = deg2rad($lng1);
    $radLng2 = deg2rad($lng2);
    $a = $radLat1 - $radLat2;
    $b = $radLng1 - $radLng2;
    $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.137;
    return bcadd($s, 0, 2);
}
相關文章
相關標籤/搜索