哈喽雷雷 - inside
type: channel
link: https://www.lxtian.com/tag/inside/
items: 地图相关:判断一个位置是否在多边形区域范围内

地图相关:判断一个位置是否在多边形区域范围内
type: item
date: 2023-04-20T17:42:00+08:00
description: 前言 工作中有个需求需要判断一个点（位置：经纬度）是否在一个多边形的区域范围内，故此记录下方法，用途范围不局限于百度地图 关联词汇：百度地图、高德地图、腾讯地图 解决方案 /* * 判断一个位置是否在多边形区域范围内 * @method isInsidePolygon * @param { Object } point 需要判断的目标位置 {lng:116, lat:39} * @param { Array } polygonPath 多边形范围的数组 [{lng:116, lat:39}, {lng:116, lat:39}, {lng:116, lat:39}] */ isInsidePolygon(point, polygonPath) { const pts = polygonPath const N = pts.length const x = point.lng const y = point.lat let inside = false for (let i = 0, j = N - 1; i < N; j = i++) { const xi = pts[i].lng const yi = pts[i].lat const xj = pts[j].lng const yj = pts[j].lat const intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi) if (intersect) inside = !inside } return inside },