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

如何用PHP判断坐标是否在Google Map边界范围内?

判断坐标是否在Google Map边界范围内(PHP实现)

核心逻辑

Google Map的边界由东北(northeast)和西南(southwest)两个坐标点定义一个矩形区域,判断目标坐标是否在该区域内需要同时满足两个条件:

  • 目标纬度介于西南边界纬度和东北边界纬度之间(纬度值越大越靠北,因此东北边界纬度始终大于西南边界纬度)
  • 目标经度介于西南边界经度和东北边界经度之间(东经为正,西经为负,需根据实际边界的经度范围判断)

PHP实现代码

<?php
/**
 * 判断给定坐标是否在指定Google Map边界范围内
 * @param float $targetLat 目标纬度
 * @param float $targetLng 目标经度
 * @param array $northeast 东北边界坐标(必须包含lat、lng键)
 * @param array $southwest 西南边界坐标(必须包含lat、lng键)
 * @return bool 坐标在范围内返回true,否则返回false
 * @throws InvalidArgumentException 边界坐标格式错误时抛出异常
 */
function isCoordinateInBounds(float $targetLat, float $targetLng, array $northeast, array $southwest): bool
{
    // 校验边界坐标的必要字段
    $requiredKeys = ['lat', 'lng'];
    foreach ([$northeast, $southwest] as $bounds) {
        if (array_diff($requiredKeys, array_keys($bounds))) {
            throw new InvalidArgumentException("边界坐标必须包含 'lat' 和 'lng' 字段");
        }
    }

    // 纬度范围判断
    $isLatValid = $targetLat >= $southwest['lat'] && $targetLat <= $northeast['lat'];
    // 经度范围判断
    $isLngValid = $targetLng >= $southwest['lng'] && $targetLng <= $northeast['lng'];

    return $isLatValid && $isLngValid;
}

// 示例测试
$targetLat = 40.712776;
$targetLng = -74.005974;

$northeastBounds = [
    'lat' => 28.63713261089665,
    'lng' => 77.22579752272338
];

$southwestBounds = [
    'lat' => 28.619767323553265,
    'lng' => 77.18275343245239
];

try {
    $result = isCoordinateInBounds($targetLat, $targetLng, $northeastBounds, $southwestBounds);
    echo $result ? "坐标在边界范围内" : "坐标不在边界范围内";
} catch (InvalidArgumentException $e) {
    echo "错误:" . $e->getMessage();
}
?>

代码说明

  1. 参数校验:确保传入的边界坐标包含必要的lat和lng字段,避免因格式错误导致逻辑异常
  2. 范围判断:分别对纬度和经度进行区间校验,只有两者同时满足时,才判定坐标在边界范围内
  3. 示例验证:使用你提供的测试坐标(纽约经纬度)和边界(印度新德里附近区域),运行后会输出坐标不在边界范围内,符合预期结果

内容的提问来源于stack exchange,提问作者Roushan Choudhary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 09:57:33