php计算两个经纬度地点之间的距离
封面图
•
2025-11-01
•
PHP
254
0
0
0
在 PHP 中,可以通过 **Haversine 公式** 来计算两个经纬度之间的直线距离(地球表面的最短距离)。这个公式适用于大多数地理坐标计算。 --- ### ✅ Haversine 公式简介: Haversine 公式用于计算球面上两点之间的大圆距离。公式如下: $$ a = \sin^2\left(\frac{\Delta \phi}{2}\right) + \cos(\phi_1) \cdot \cos(\phi_2) \cdot \sin^2\left(\frac{\Delta \lambda}{2}\right) $$ $$ c = 2 \cdot \text{atan2}(\sqrt{a}, \sqrt{1-a}) $$ $$ d = R \cdot c $$ 其中: - $ \phi $ 是纬度(以弧度为单位) - $ \lambda $ 是经度(以弧度为单位) - $ R $ 是地球半径(平均值约为 6371 公里) --- ### 🧮 PHP 实现代码: ```php function calculateDistance($lat1, $lon1, $lat2, $lon2) { // 地球半径(单位:公里) $earthRadius = 6371; // 将角度转换为弧度 $lat1 = deg2rad($lat1); $lon1 = deg2rad($lon1); $lat2 = deg2rad($lat2); $lon2 = deg2rad($lon2); // 计算纬度和经度的差值 $dLat = $lat2 - $lat1; $dLon = $lon2 - $lon1; // Haversine 公式 $a = sin($dLat / 2) * sin($dLat / 2) + cos($lat1) * cos($lat2) * sin($dLon / 2) * sin($dLon / 2); $c = 2 * atan2(sqrt($a), sqrt(1 - $a)); // 计算距离 $distance = $earthRadius * $c; return $distance; // 返回距离(单位:公里) } // 示例使用 $lat1 = 40.7128; // 纽约 $lon1 = -74.0060; $lat2 = 34.0522; // 洛杉矶 $lon2 = -118.2437; $distance = calculateDistance($lat1, $lon1, $lat2, $lon2); echo "两地之间的距离是:".round($distance, 2)." 公里"; ``` --- ### 🔁 可选:返回米或英里 如果你想返回 **米** 或 **英里**,可以修改 `earthRadius` 的值: - 米:`6371000` - 英里:`3958.8` 例如: ```php $earthRadius = 3958.8; // 英里 ``` --- ### ✅ 输出示例: ``` 两地之间的距离是:3935.75 公里 ``` --- 如果你需要更精确的计算(比如考虑地球椭球形状),可以使用 **Vincenty 公式**,但 Haversine 公式对于大多数应用已经足够准确。 如需帮助将结果格式化为“X 公里”或“X 英里”,也可以告诉我!
上一篇:
PHP保留两位小数的几种方法
下一篇:
php 获取数组第一个key 第一个键值对
标题录入,一次不能超过6条
返回顶部
留言
留言
评论