判断经纬度是否在某个区域内
程序员文章站
2024-02-14 22:59:10
...
通过经纬度信息,判断某点是否在某个区域内
代码
/**
* 处理区域轮廓点数据
* 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
上一篇: 计算两个经纬度之间的距离
推荐阅读
-
判断经纬度是否在某个区域内
-
判断一个点的经纬度是否在规划的区域内(js)
-
在Symfony中,如何通过根据 routing placeholder 来判断当前用户是否具有 access control?
-
C#利用反射来判断对象是否包含某个属性的实现方法
-
Android判断Activity是否在最上层的方法
-
C#判断给定IP地址是否在指定范围内的方法
-
Android开发判断SQLite数据库中某个表是否存在 博客分类: Android sqliteandroid
-
mysql中FIND_IN_SET的应用(判断某字符串是否在带逗号的字符串之_MySQL
-
判断时间在某个范围内
-
使用jQuery判断页面中某个元素是否在可视区范围内