查看: 1125|回复: 0

根据传统方式经纬度计算两点之间的距离

[复制链接]

748

主题

39

回帖

3907

积分

管理员

总舵主

积分
3907
QQ
发表于 2024-1-12 19:34:03 | 显示全部楼层 |阅读模式


传统方式:
  1. <?php

  2. function haversineDistance($lat1, $lon1, $lat2, $lon2) {
  3.     // 将经纬度转换为弧度
  4.     $lat1 = deg2rad($lat1);
  5.     $lon1 = deg2rad($lon1);
  6.     $lat2 = deg2rad($lat2);
  7.     $lon2 = deg2rad($lon2);

  8.     // 计算经纬度差值
  9.     $dlat = $lat2 - $lat1;
  10.     $dlon = $lon2 - $lon1;

  11.     // 使用Haversine公式计算距离
  12.     $a = sin($dlat / 2) ** 2 + cos($lat1) * cos($lat2) * sin($dlon / 2) ** 2;
  13.     $c = 2 * asin(sqrt($a));
  14.     $radius = 6371; // 地球半径,单位为公里

  15.     // 计算实际距离
  16.     $distance = $radius * $c;

  17.     return $distance;
  18. }

  19. // 例子:计算两个经纬度之间的距离
  20. $lat1 = 37.7749; // 用户1的纬度
  21. $lon1 = -122.4194; // 用户1的经度
  22. $lat2 = 34.0522; // 用户2的纬度
  23. $lon2 = -118.2437; // 用户2的经度

  24. $distance = haversineDistance($lat1, $lon1, $lat2, $lon2);

  25. echo "两个用户之间的距离为:{$distance}公里";

  26. ?>
复制代码


道不同,不相为谋!理想要有,万一实现了呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:2513533699@qq.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|鲁ICP备19000917号|鲁公网安备37078302000320号

在本版发帖
关注公众号
QQ客服返回顶部