You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP中通过经纬度计算方位(北、东、西、南)并求代码示例

PHP 经纬度计算方位(北/东/南/西)实现

你的原有代码存在几个关键问题:未将经纬度转换为弧度(PHP三角函数默认使用弧度计算)、atan2参数顺序错误,且缺少角度转方位的映射逻辑。以下是修正后的完整实现:

<?php
// 起点经纬度(转为浮点数)
$lat1 = (float)"43.8704455";         
$lon1 = (float)"-79.4508084";

// 终点经纬度(转为浮点数)
$lat2 = (float)"43.7607414";         
$lon2 = (float)"-79.4873425";

// 转换为弧度(PHP三角函数仅支持弧度输入)
$lat1Rad = deg2rad($lat1);
$lon1Rad = deg2rad($lon1);
$lat2Rad = deg2rad($lat2);
$lon2Rad = deg2rad($lon2);

// 计算经度差
$deltaLon = $lon2Rad - $lon1Rad;

// 计算方位角(弧度)
$y = sin($deltaLon) * cos($lat2Rad);
$x = cos($lat1Rad) * sin($lat2Rad) - sin($lat1Rad) * cos($lat2Rad) * cos($deltaLon);
$bearingRad = atan2($y, $x);

// 将弧度转为度数,并调整至0-360°范围
$bearingDeg = rad2deg($bearingRad);
$bearingDeg = ($bearingDeg + 360) % 360;

// 映射度数到方位方向
$directions = [
    '北', '东北', '东', '东南',
    '南', '西南', '西', '西北', '北'
];
$index = round($bearingDeg / 45);
$direction = $directions[$index];

// 输出结果
echo "方位方向:{$direction}<br>";
echo "方位角度:{$bearingDeg}°";
?>

关键说明

  1. 弧度转换:PHP的sin/cos等三角函数仅接受弧度值,必须用deg2rad()将经纬度从度数转为弧度。
  2. 方位角计算:采用标准大圆方位角公式,确保计算精度。
  3. 角度校准:通过($bearingDeg + 360) % 360将负角度调整为0-360°的正角度。
  4. 方位映射:将360°划分为8个45°区间,对应8个常用方位(最后重复'北'是为了处理360°与0°等价的情况)。

内容的提问来源于stack exchange,提问作者Arnab Bose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:02:22