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

如何判断经纬度坐标是否处于指定矩形区域内?

判断经纬度坐标是否在矩形区域内的实现方案

一、基础矩形范围判断(无需第三方库)

你的区域是轴对齐的矩形,直接通过经纬度范围比较就能快速判断,逻辑最简单:

  1. 先从给定的两个对角点,算出矩形的纬度和经度边界:
    • 纬度范围:minLat = min(43.672162, 43.629845),maxLat = max(43.672162, 43.629845)
    • 经度范围:minLon = min(-79.43585, -79.314585),maxLon = max(-79.43585, -79.314585)
  2. 待检查坐标(checkLat, checkLon)满足以下所有条件,就说明在矩形内:
    checkLat >= minLat && checkLat <= maxLat && checkLon >= minLon && checkLon <= maxLon
    

针对你的示例坐标43.651989 , -79.371993:

  • 纬度在43.62984543.672162之间,经度在-79.43585-79.314585之间,所以该坐标在矩形内。

二、正确使用github.com/kellydunn/golang-geo包

你之前的代码问题在于,创建多边形需要矩形的四个顶点,而非两个对角点。正确实现如下:

import (
    "fmt"
    "math"
    "github.com/kellydunn/golang-geo"
)

func main() {
    // 给定的矩形对角点
    lat1, lon1 := 43.672162, -79.43585
    lat2, lon2 := 43.629845, -79.314585

    // 推导矩形四个顶点
    minLat := math.Min(lat1, lat2)
    maxLat := math.Max(lat1, lat2)
    minLon := math.Min(lon1, lon2)
    maxLon := math.Max(lon1, lon2)

    // 创建四个顶点的Point实例
    p1 := geo.NewPoint(maxLat, minLon) // 左上
    p2 := geo.NewPoint(maxLat, maxLon) // 右上
    p3 := geo.NewPoint(minLat, maxLon) // 右下
    p4 := geo.NewPoint(minLat, minLon) // 左下

    // 创建闭合多边形(最后重复第一个点确保闭合)
    poly := geo.NewPolygon(p1, p2, p3, p4, p1)

    // 待检查的目标点
    checkPoint := geo.NewPoint(43.651989, -79.371993)

    // 判断是否在多边形内
    isInside := poly.Contains(checkPoint)
    fmt.Println(isInside) // 输出:true
}

三、Google Maps API 实现方案

如果用前端场景的Google Maps API,可以直接利用LatLngBounds对象的contains方法:

// 定义矩形边界(西南角、东北角)
const bounds = new google.maps.LatLngBounds(
    new google.maps.LatLng(43.629845, -79.43585),
    new google.maps.LatLng(43.672162, -79.314585)
);

// 待检查的坐标点
const checkPoint = new google.maps.LatLng(43.651989, -79.371993);

// 判断是否在范围内
const isInside = bounds.contains(checkPoint);
console.log(isInside); // 输出:true

后端场景建议直接用第一种范围比较的逻辑,避免API调用的开销和延迟。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:27:22