PHP 计算指定半径内经纬度范围(四个角落坐标)

半杯拿铁
半杯拿铁
发布时间:2026-10-13| 5人浏览过
原创

本文将分享 PHP 计算当前坐标指定距离内四个角落经纬度的方法,主要利用地球半径与经纬度偏差公式,快速生成用于地理位置筛选的边界参数。

场景说明与结果

在处理地理位置相关功能时,往往需要根据一个中心点(如用户当前位置)和搜索半径(如 3 公里),快速找出覆盖该范围的矩形区域,即左上、右上、左下、右下四个关键点的经纬度。这一过程常用于数据库的范围查询(BETWEEN)或地图 API 的初始视野设置。

以下示例演示如何在 PHP 中以 6371 千米为地球平均半径,计算半径 3 公里内的经纬度偏移量,并返回四个角落的坐标数组。

准备条件

需要已知的当前经纬度变量:

  • $lng:经度(Longitude),单位为十进制度数。
  • $lat:纬度(Latitude),单位为十进制度数。

注意:PHP 的三角函数需要使用弧度制,因此涉及角度转换时需使用 deg2rad() 和 rad2deg()。

第 1 步:定义基础参数

设置地球平均半径和搜索距离(单位统一为千米):

$half = 6371; // 地球平均半径 (km)
$distance = 3; // 搜索距离 (km)

第 2 步:计算经度与纬度的偏移量

由于地球是球体,经度线的长度随纬度变化(赤道最长,极点为 0)。纬度线的长度在局部可近似为常数。需分别计算经度偏差 $dlng 和纬度偏差 $dlat:

  1. 计算纬度偏差 ($dlat): 纬度方向上,1 弧度约为地球半径的距离。
    $dlat = $distance / $half; // 弧度
    $dlat = rad2deg($dlat); // 转换为角度
    目的:确定南北方向的度数偏移量。
  2. 计算经度偏差 ($dlng): 经度方向的弧长受余弦函数影响,公式为 sin(θ) = sin(d/R) / cos(lat)。
    $dlng = 2 * asin(sin($distance / (2 * $half)) / cos(deg2rad($lat)));
    $dlng = rad2deg($dlng); // 转换为角度
    目的:根据当前纬度校正东西方向的度数偏移量,确保在不同纬度下“3公里”的实际地理跨度准确。

第 3 步:生成四个角落坐标

基于中心点和偏差量,组合出四个角的经纬度:

$fourpoint = array(
  'left-top' => array('lat' => $lat + $dlat, 'lng' => $lng - $dlng),
  'right-top' => array('lat' => $lat + $dlat, 'lng' => $lng + $dlng),
  'left-bottom' => array('lat' => $lat - $dlat, 'lng' => $lng - $dlng),
  'right-bottom' => array('lat' => $lat - $dlat, 'lng' => $lng + $dlng)
);

完成状态:此时 $fourpoint 数组包含了左上、右上、左下、右下四个关键点,可用于后续的 SQL BETWEEN lng AND lng 和 BETWEEN lat AND lat 查询以缩小检索范围。

简要总结

以上就是利用 PHP 计算指定经纬度范围内四个角落最大最小经纬度的详细内容,更多关于 PHP 地理位置处理技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。