佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > php兩點地理坐標距離的計算方法

php兩點地理坐標距離的計算方法

熱門標簽:阿里云 服務器配置 科大訊飛語音識別系統(tǒng) Linux服務器 Mysql連接數(shù)設置 團購網(wǎng)站 電子圍欄 銀行業(yè)務

本文實例為大家分享了php計算兩點地理坐標距離的具體代碼,供大家參考,具體內(nèi)容如下

功能:根據(jù)圓周率和地球半徑系數(shù)與兩點坐標的經(jīng)緯度,計算兩點之間的球面距離。

獲取兩點坐標距離:

?php
/**
 * 計算兩點地理坐標之間的距離
 * @param Decimal $longitude1 起點經(jīng)度
 * @param Decimal $latitude1 起點緯度
 * @param Decimal $longitude2 終點經(jīng)度 
 * @param Decimal $latitude2 終點緯度
 * @param Int   $unit    單位 1:米 2:公里
 * @param Int   $decimal  精度 保留小數(shù)位數(shù)
 * @return Decimal
 */
function getDistance($longitude1, $latitude1, $longitude2, $latitude2, $unit=2, $decimal=2){

  $EARTH_RADIUS = 6370.996; // 地球半徑系數(shù)
  $PI = 3.1415926;

  $radLat1 = $latitude1 * $PI / 180.0;
  $radLat2 = $latitude2 * $PI / 180.0;

  $radLng1 = $longitude1 * $PI / 180.0;
  $radLng2 = $longitude2 * $PI /180.0;

  $a = $radLat1 - $radLat2;
  $b = $radLng1 - $radLng2;

  $distance = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));
  $distance = $distance * $EARTH_RADIUS * 1000;

  if($unit==2){
    $distance = $distance / 1000;
  }

  return round($distance, $decimal);

}

// 起點坐標
$longitude1 = 113.330405;
$latitude1 = 23.147255;

// 終點坐標
$longitude2 = 113.314271;
$latitude2 = 23.1323;

$distance = getDistance($longitude1, $latitude1, $longitude2, $latitude2, 1);
echo $distance.'m'; // 2342.38m

$distance = getDistance($longitude1, $latitude1, $longitude2, $latitude2, 2);
echo $distance.'km'; // 2.34km

?>

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • php如何計算兩坐標點之間的距離
  • golang與php實現(xiàn)計算兩個經(jīng)緯度之間距離的方法
  • PHP安裝GeoIP擴展根據(jù)IP獲取地理位置及計算距離的方法
  • php實現(xiàn)計算百度地圖坐標之間距離的方法
  • PHP實現(xiàn)搜索地理位置及計算兩點地理位置間距離的實例
  • php計算兩個坐標(經(jīng)度,緯度)之間距離的方法
  • PHP計算百度地圖兩個GPS坐標之間距離的方法
  • PHP根據(jù)兩點間的經(jīng)緯度計算距離
  • PHP計算2點經(jīng)緯度之間的距離代碼

標簽:廣元 蚌埠 衢州 棗莊 大理 江蘇 萍鄉(xiāng) 衡水

巨人網(wǎng)絡通訊聲明:本文標題《php兩點地理坐標距離的計算方法》,本文關鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    峡江县| 延庆县| 保山市| 正定县| 拜城县| 徐闻县| 金华市| 隆尧县| 山东省| 锡林郭勒盟| 徐水县| 雷波县| 永济市| 文昌市| 洛浦县| 阳原县| 宝应县| 海阳市| 自贡市| 青川县| 宣汉县| 锡林郭勒盟| 苏尼特右旗| 米易县| 自治县| 榕江县| 上饶县| 双辽市| 黔南| 峨眉山市| 东源县| 遂平县| 红桥区| 常熟市| 灵石县| 吴川市| 长丰县| 南江县| 泾源县| 广河县| 紫阳县|