• 售前

  • 售后

热门帖子
入门百科

php怎样盘算两坐标点之间的距离

[复制链接]
梦想镌刻时光光x 显示全部楼层 发表于 2021-10-26 13:27:06 |阅读模式 打印 上一主题 下一主题
本文实例为各人分享了php盘算两坐标点之间隔断的实当代码,供各人参考,详细内容如下
地球上两个点之间,可近可远。

当比较近的时候,可以忽略球面因素,当做是一个平面,这样就有了两种盘算方法。
  1. //两点间距离比较近
  2. function getDistance($lat1, $lng1, $lat2, $lng2)
  3. {
  4. $earthRadius = 6367000; //地球半径m
  5. $lat1 = ($lat1 * pi() ) / 180;
  6. $lng1 = ($lng1 * pi() ) / 180;
  7. $lat2 = ($lat2 * pi() ) / 180;
  8. $lng2 = ($lng2 * pi() ) / 180;
  9. $calcLongitude = $lng2 - $lng1;
  10. $calcLatitude = $lat2 - $lat1;
  11. $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2);
  12. $stepTwo = 2 * asin(min(1, sqrt($stepOne)));
  13. $calculatedDistance = $earthRadius * $stepTwo;
  14. return round($calculatedDistance);
  15. }
  16. //两点间距离比较远
  17. function getLongDistance($lat1, $lng1, $lat2,$lng2,$radius = 6378.137)
  18. {
  19. $rad = floatval(M_PI / 180.0);
  20. $lat1 = floatval($lat1) * $rad;
  21. $lng1 = floatval($lng1) * $rad;
  22. $lat2 = floatval($lat2) * $rad;
  23. $lng2 = floatval($lng2) * $rad;
  24. $theta = $lng2 - $lng1;
  25. $dist = acos(sin($lat1) * sin($lat2) + cos($lat1) * cos($lat2) * cos($theta));
  26. if ($dist < 0 ) {
  27.   $dist += M_PI;
  28. }
  29. return $dist = $dist * $radius;
  30. }
复制代码
小编再为各人分享一段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);//输出距离/米
复制代码
以上就是本文的全部内容,希望对各人的学习有所帮助,也希望各人多多支持草根技术分享。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作