根据海拔高度计算两点地理座标之间的相隔

原创
小哥 3年前 (2022-11-05) 阅读数 54 #大杂烩

/**

  • 计算两点地理坐标之间的距离
  • @param Decimal $longitude1 起点经度
  • @param Decimal $latitude1 起点纬度
  • @param Decimal $longitude2 终点经度
  • @param Decimal $latitude2 终点纬度
  • @param Int   $unit    单位 1:米 2:公里
  • @param Int   $decimal  精度 保留小数位数
  • @return Decimal
    */
    function distance($longitude1, $latitude1, $longitude2, $latitude2, $unit=2, $decimal=2){

$EARTH_RADIUS = 6370.996; // 地球半径系数
$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);

}

  1. // 起点坐标

  2. $longitude1 = 113.330405;

  3. $latitude1 = 23.147255;

  4. // 终点坐标

  5. $longitude2 = 113.314271;

  6. $latitude2 = 23.1323;

  7. $distance = getDistance( $longitude1 , $latitude1 , $longitude2 , $latitude2 , 1);

  8. echo $distance . m ; // 2342.38m

  9. $distance = getDistance( $longitude1 , $latitude1 , $longitude2 , $latitude2 , 2);

  10. echo $distance . km ; // 2.34km

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门