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

如何从一组LatLng坐标池中查找最大的LatLng坐标对

实现思路

首先你得先明确你对坐标对「最大值」的定义,不同业务场景的判定规则完全不同,常见的判定逻辑有下面几种:

  • 规则1:优先比较纬度(Lat),纬度更大的坐标判定为更大,纬度相等时再比较经度(Lng)大小,和你示例里的结果匹配,你的示例里第一个坐标纬度3.9是最大的,直接命中
  • 规则2:计算坐标到原点(0,0)的欧氏距离,距离更大的判定为更大,你示例里第一个坐标的距离是√(3.9²+3.4²)≈5.17,也是三个里面最大的,也符合你的示例结果
  • 规则3:两个维度的数值相加,和更大的坐标判定为更大,你示例里第一个坐标和为7.3,同样是最大的

具体实现代码(JS示例)

我们以最常用的「欧氏距离最大」规则为例,代码实现如下:

// 定义坐标数组
const latLngList = [
  { lat: 3.9, lng: 3.4 },
  { lat: 1.2, lng: 3.3 },
  { lat: 0.4, lng: 2.4 }
]

// 计算坐标到原点的平方距离(开方是单调运算,不开方不影响大小比较,性能更好)
const getDistanceSquare = (point) => {
  return point.lat ** 2 + point.lng ** 2
}

// 遍历找最大值
const maxPoint = latLngList.reduce((max, current) => {
  return getDistanceSquare(current) > getDistanceSquare(max) ? current : max
}, latLngList[0])

console.log(maxPoint) // 输出 {lat: 3.9, lng: 3.4}

如果是要用「优先比纬度再比经度」的规则,只需要修改reduce里的比较逻辑即可:

const maxPoint = latLngList.reduce((max, current) => {
  if (current.lat !== max.lat) {
    return current.lat > max.lat ? current : max
  }
  return current.lng > max.lng ? current : max
}, latLngList[0])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 02:15:04