判断经纬度是否在某个区域内

该代码实现了一个功能,根据给定的经纬度坐标判断一个点是否位于一个多边形区域内。首先处理区域轮廓点数据,然后通过计算判断点是否在多边形内。示例中展示了如何使用该功能,检查坐标(121.5654, 24.033)是否在特定路径区域内,返回结果为true。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过经纬度信息,判断某点是否在某个区域内

代码
/**
 * 处理区域轮廓点数据
 * path : [ [ lon,lat ] ]
 */
export function preceedPointInArea(lng, lat, points) {
  const polygon = [];
  for (const point of points) {
    if (point.length == 2) {
      point["lng"] = parseFloat(point[0]);
      point["lat"] = parseFloat(point[1]);
      polygon.push(point);
    }
  }
  return isPointInPolygon(polygon, lng, lat);
}

/**
 * 判断点是否在某个区域
 */
export function isPointInPolygon(polygon, lng, lat) {
  const numberOfPoints = polygon.length;
  const polygonLats = [];
  const polygonLngs = [];
  for (let i = 0; i < numberOfPoints; i++) {
    polygonLats.push(polygon[i]["lat"]);
    polygonLngs.push(polygon[i]["lng"]);
  }
  let polygonContainsPoint = false;
  for (
    let node = 0, altNode = numberOfPoints - 1;
    node < numberOfPoints;
    altNode = node++
  ) {
    if (
      polygonLngs[node] > lng != polygonLngs[altNode] > lng &&
      lat <
        ((polygonLats[altNode] - polygonLats[node]) *
          (lng - polygonLngs[node])) /
          (polygonLngs[altNode] - polygonLngs[node]) +
          polygonLats[node]
    ) {
      polygonContainsPoint = !polygonContainsPoint;
    }
  }
  return polygonContainsPoint;
}

使用
 import { preceedPointInArea } from "./utli.js";
 const path = [
 	[ 120,25 ],
 	[ 130,25 ],
 	[ 130,20 ],
 	[ 120,20 ]
 ];
 console.log(preceedPointInArea(121.5654, 24.033, path)); // true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值