当前位置:首页 > PHP教程 > php应用 > 列表

php如何计算两坐标点之间的距离

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-03 15:06:10 浏览: 评论:0 

本文实例为大家分享了php计算两坐标点之间距离的实现代码,供大家参考,具体内容如下。

地球上两个点之间,可近可远。

当比较近的时候,可以忽略球面因素,当做是一个平面,这样就有了两种计算方法。

  1. //两点间距离比较近 
  2. function getDistance($lat1$lng1$lat2$lng2)  
  3. {  
  4.  $earthRadius = 6367000; //地球半径m 
  5.  
  6.  $lat1 = ($lat1 * pi() ) / 180;  
  7.  $lng1 = ($lng1 * pi() ) / 180;  
  8.  
  9.  $lat2 = ($lat2 * pi() ) / 180;  
  10.  $lng2 = ($lng2 * pi() ) / 180;  
  11.  
  12.  $calcLongitude = $lng2 - $lng1;  
  13.  $calcLatitude = $lat2 - $lat1;  
  14.  $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2);  
  15.  $stepTwo = 2 * asin(min(1, sqrt($stepOne)));  
  16.  $calculatedDistance = $earthRadius * $stepTwo;  
  17.  
  18.  return round($calculatedDistance);  
  19. }  
  20.  
  21. //两点间距离比较远 
  22. function getLongDistance($lat1$lng1$lat2,$lng2,$radius = 6378.137) 
  23.  $rad = floatval(M_PI / 180.0); 
  24.  
  25.  $lat1 = floatval($lat1) * $rad
  26.  $lng1 = floatval($lng1) * $rad
  27.  $lat2 = floatval($lat2) * $rad
  28.  $lng2 = floatval($lng2) * $rad
  29.  
  30.  $theta = $lng2 - $lng1
  31.  
  32.  $dist = acos(sin($lat1) * sin($lat2) + cos($lat1) * cos($lat2) * cos($theta)); 
  33.  
  34.  if ($dist < 0 ) { 
  35.   $dist += M_PI; 
  36.  } 
  37.  return $dist = $dist * $radius

小编再为大家分享一段php坐标之间距离的求解代码:

  1. <?php  
  2. define('EARTH_RADIUS', 6378.137);//地球半径  
  3. define('PI', 3.1415926);  
  4. /**  
  5. * 计算两组经纬度坐标 之间的距离  
  6. * params :lat1 纬度1; lng1 经度1; lat2 纬度2; lng2 经度2; len_type (1:m or 2:km);  
  7. * return m or km  
  8. */ 
  9. function GetDistance($lat1$lng1$lat2$lng2$len_type = 1, $decimal = 2)  
  10. {  
  11. $radLat1 = $lat1 * PI / 180.0;  
  12. $radLat2 = $lat2 * PI / 180.0;  
  13. $a = $radLat1 - $radLat2;  
  14. $b = ($lng1 * PI / 180.0) - ($lng2 * PI / 180.0);  
  15. $s = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));  
  16. $s = $s * EARTH_RADIUS;  
  17. $s = round($s * 1000);  
  18. if ($len_type > 1)  
  19. {  
  20. $s /= 1000;  
  21. }  
  22. return round($s$decimal);  
  23. }  
  24. echo GetDistance(39.908156,116.4767, 39.908452,116.450479, 1);//输出距离/米

Tags: php两坐标点之间距离

分享到: