2

我需要检查一个点是否位于地图上的给定矩形内。我正在使用传单创建边界框,这需要我提供矩形的西南和东北点。

我有以下信息: 1. 矩形顶部边缘的中点 2. 矩形底部边缘的中点 3. 边长(即宽度)= 1000 m。

可以安全地假设上述两点非常接近。

关于如何实现这一点的任何想法都会有所帮助。

4

1 回答 1

1

首先,要获得左上角和右下角点,您需要使用一些几何图形。此页面:https ://gis.stackexchange.com/questions/2951/algorithm-for-offsetting-a-latitude-longitude-by-some-amount-of-meters是如何准确地将米转换为十进制度。

例如,为了得到左上角点,你从线的中点开始,你有线的总长度,你需要将线的长度除以 2,然后转换从米到十进制的长度,然后将 X 坐标添加该数量。这会给你右上角。通过减去该数量而不是减去该数量,对左下角重复此操作。

var upperMiddlePoint = [30,50];
var segmentLength = 5000;
var northEastPoint = upperMiddlePoint;
var northEastPoint.x = northEastPoint.x + ((segmentLength / 2) * DECIMAL_DEGREES_PER_METER)

这里有一个快速简单的答案:使用纬度/经度+公里距离进行简单计算?描述了如何在上述代码段中获取 DECIMAL_DEGREES_PER_METER 值。

创建一个LatLngBounds对象来表示您的矩形边界。API 在这里。

var bounds = new L.LatLngBounds(southWestPoint, northEastPoint);

然后,使用此处LatLngBounds.contains()描述的函数来确定您的点是否在这些范围内。

var contains = bounds.contains([50, 30]);
if (contains) {
     doStuff();
}

如果边界包含该contains点,则布尔值为真,否则为假。

于 2013-09-05T12:02:58.500 回答