如何用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(); } ?>
代码说明
- 参数校验:确保传入的边界坐标包含必要的
lat和lng字段,避免因格式错误导致逻辑异常 - 范围判断:分别对纬度和经度进行区间校验,只有两者同时满足时,才判定坐标在边界范围内
- 示例验证:使用你提供的测试坐标(纽约经纬度)和边界(印度新德里附近区域),运行后会输出
坐标不在边界范围内,符合预期结果
内容的提问来源于stack exchange,提问作者Roushan Choudhary
相关产品推荐
相关产品推荐

