我正在尝试解决有关点和边界的问题。
我的问题:
我正在尝试使用 LatlngBounds 来解决,但似乎这个边界通常使用 4 个点
您可以获取城市/地区的数据并将其保存为GeoJSON格式,这是存储和共享地理边界的常用格式。
OpenStreetMap
,政府GIS数据或其他地图服务提供城市/地区的GeoJSON数据。
用于检查一个点是否在边界内,即多边形(形成边界的点的集合)城市或地区,例如:
const cityBoundary = {
"type": "Polygon",
"coordinates": [
[
[lng1, lat1],
[lng2, lat2],
...
[lng1, lat1]
]
]
};
那么你可以使用
point-in-polygon
算法。您可以使用像 turf.js 这样的库来检查点是否在多边形内部。
如何实现这一目标的示例
// the point
const markerPoint = [markerLng, markerLat];
// Check if inside the polygon
const isInside = turf.booleanPointInPolygon(markerPoint, cityBoundary);
if (isInside) {
console.log("The point is within the boundnary");
} else {
console.log("The point is outside the boundary");
}
API 文档中有关
booleanPointInPolygon
方法的一些示例 https://turfjs.org/docs/api/booleanPointInPolygon#examples