上一篇
📅 最新动态(2025年8月)
随着本地化服务的普及,精准位置计算需求激增,PHP开发者们纷纷优化地理算法,比如采用更高效的Haversine公式替代传统球面三角法,使得距离计算速度提升30%!🚀
无论是外卖APP的配送距离、社交软件的“附近的人”,还是物流路径规划,都依赖经纬度坐标和距离测算,PHP作为后端利器,能轻松处理这些计算!
地球上的每个点都能用纬度(lat)和经度(lng)表示:
Haversine公式通过地球曲率计算两点间最短距离(大圆距离),精度高且代码简单!
function calculateDistance($lat1, $lng1, $lat2, $lng2) { $earthRadius = 6371; // 地球半径(公里) $dLat = deg2rad($lat2 - $lat1); $dLng = deg2rad($lng2 - $lng1); $a = sin($dLat/2) * sin($dLat/2) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($dLng/2) * sin($dLng/2); $c = 2 * atan2(sqrt($a), sqrt(1-$a)); return $earthRadius * $c; // 返回公里数 } // 示例:计算北京到上海的距离 $distance = calculateDistance(39.9042, 116.4074, 31.2304, 121.4737); echo "两地相距约 " . round($distance, 2) . " 公里"; // 输出:约1068公里
💡 小贴士:
621371
即可! cos(deg2rad($lat))
减少重复运算。 用array_map
处理多个坐标对,避免循环嵌套:
$locations = [ ['lat' => 39.9042, 'lng' => 116.4074], // 北京 ['lat' => 31.2304, 'lng' => 121.4737], // 上海 // 更多坐标... ]; $distances = array_map(function($loc) use ($userLat, $userLng) { return calculateDistance($userLat, $userLng, $loc['lat'], $loc['lng']); }, $locations);
结合SQL或PHP数组过滤:
$nearbyPlaces = array_filter($places, function($place) use ($userLat, $userLng, $maxDistance) { return calculateDistance($userLat, $userLng, $place['lat'], $place['lng']) <= $maxDistance; });
lat,lng
,百度地图可能相反) 用PHP玩转地理位置计算,只需几行代码!下次遇到“附近推荐”需求,别慌——复制粘贴Haversine公式,轻松搞定!🎉
📢 试试看:用你的家乡坐标和公司地址测测距离,评论区晒结果吧!👇
本文由 澹台韵 于2025-08-02发表在【云服务器提供商】,文中图片由(澹台韵)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/511129.html
发表评论