Map 用两个给定的lat长点和宽度计算矩形的端点

Map 用两个给定的lat长点和宽度计算矩形的端点,map,geometry,latitude-longitude,leaflet,rectangles,Map,Geometry,Latitude Longitude,Leaflet,Rectangles,我需要检查一个点是否位于地图上给定的矩形内。我正在使用传单创建边界框,它要求我提供矩形的西南点和东北点 我有以下资料: 1.矩形上边缘的中点 2.矩形下边缘的中点 3.边缘长度(即宽度)=1000 m 可以安全地假设上述两点非常接近 任何关于如何实现这一点的想法都会很有帮助。首先,要获得左上角和右下角的点,需要使用一些几何图形。本页:是一个关于如何将米精确转换为十进制度数的好例子 例如,为了获得左上角的点,从直线的中点开始,得到直线的总长度,需要将直线长度除以2,然后将该长度从米转换为分米度,然

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

我有以下资料: 1.矩形上边缘的中点 2.矩形下边缘的中点 3.边缘长度(即宽度)=1000 m

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


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

首先,要获得左上角和右下角的点,需要使用一些几何图形。本页:是一个关于如何将米精确转换为十进制度数的好例子

例如,为了获得左上角的点,从直线的中点开始,得到直线的总长度,需要将直线长度除以2,然后将该长度从米转换为分米度,然后将X坐标加上该量。这将为您提供右上角。对左下角重复此操作,减去该量,而不是减去

var upperMiddlePoint = [30,50];
var segmentLength = 5000;
var northEastPoint = upperMiddlePoint;
var northEastPoint.x = northEastPoint.x + ((segmentLength / 2) * DECIMAL_DEGREES_PER_METER)
这里有一个简单快捷的答案:它描述了如何在上面的代码片段中获得十进制每米的度数

创建表示矩形边界的
LatLngBounds
对象

然后,如前所述,使用
LatLngBounds.contains()
函数确定点是否在这些边界内

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

如果边界包含该点,
包含
布尔值将为true,否则为false。

我知道上述函数。当我有问题中提到的数据时,我的问题是如何计算西南点和东北点,这似乎是一个简单的几何问题。为了得到左上角,你能从中间点顶部边缘X坐标减去边缘长度的1/2(比如500米)吗?然后对底部做同样的操作?在我答案的开头添加了一些代码来描述这一点。
var contains = bounds.contains([50, 30]);
if (contains) {
     doStuff();
}