传单:如何计算从中心点到边缘的距离

Sho*_*jaz 0 geometry leaflet mapbox

我正在使用传单绘制控件获取某些区域的几何图形。这些几何图形是多边形、线串、矩形和圆形,我将它们放入数据库中。我想获得从中心点到这些几何图形边缘的距离。

在此处输入图片说明

我正在使用https://github.com/mapbox/leaflet-omnivore以这种方式解析几何:

var layer = omnivore.wkt.parse(geometry);
var center = layer.getBounds().getCenter();
Run Code Online (Sandbox Code Playgroud)

我不知道如何获得从中心到边缘的距离。是否可以?

iH8*_*iH8 5

L.Circle只有L.Rectangle当它是完全正方形时才有可能。

得到半径L.Circle其实很简单。它有一个getRadius方法可以返回以米为单位的半径。

var radius = circle.getRadius();
Run Code Online (Sandbox Code Playgroud)

L.Circle参考:http : //leafletjs.com/reference.html#circle

对于L.Rectangle您可以使用getBounds它返回一个方法L.Bounds对象,它具有getNorthWestgetNorthEast该方法返回L.LatLng的对象为那些点。您可以使用对象的distanceTo方法L.LatLng来计算它们之间的距离(以米为单位),然后您需要将其除以二:

var bounds = rectangle.getBounds(),
    northWest = bounds.getNorthWest(),
    northEast = bounds.getNorthEast(),
    distance = northWest.distanceTo(northEast),
    distanceFromCenter = distance / 2;
Run Code Online (Sandbox Code Playgroud)

L.Rectangle参考:http : //leafletjs.com/reference.html#rectangle

L.Bounds参考:http : //leafletjs.com/reference.html#latlngbounds

L.LatLng参考:http : //leafletjs.com/reference.html#latlng

这里的问题是,如果您没有完美的正方形,则 NorthWest/northEast 之间的距离和 NorthWest/southWest 之间的距离将不同。也就是说,您可以理解,对于示例图片中的五边形形状进行这样的计算是不可能的,因为距离会有所不同,因为它取决于您测量它的点。