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

我使用https://github.com/mapbox/leaflet-omnivore以这种方式解析几何学:
var layer = omnivore.wkt.parse(geometry);
var center = layer.getBounds().getCenter();我不知道如何从中心到边缘的距离。有可能吗?
发布于 2015-09-14 11:45:16
对于L.Circle来说,这是可能的,如果它是完全正方形的,那么只对L.Rectangle来说是可能的。
要得到L.Circle的半径实际上很简单。它有一个getRadius方法,它将以米为单位返回半径。
var radius = circle.getRadius();L.Circle参考:http://leafletjs.com/reference.html#circle
对于L.Rectangle,您可以使用getBounds方法,它返回具有getNorthWest和getNorthEast方法的L.Bounds对象,后者返回这些点的L.LatLng对象。您可以使用distanceTo方法来计算L.LatLng对象之间的距离(以米为单位),然后需要将其除以2:
var bounds = rectangle.getBounds(),
northWest = bounds.getNorthWest(),
northEast = bounds.getNorthEast(),
distance = northWest.distanceTo(northEast),
distanceFromCenter = distance / 2;L.Rectangle参考:http://leafletjs.com/reference.html#rectangle
L.Bounds参考:http://leafletjs.com/reference.html#latlngbounds
L.LatLng参考:http://leafletjs.com/reference.html#latlng
这里的问题是,如果你没有一个完美的广场,西北/东北和西北/西南之间的距离将是不同的。尽管如此,你可以理解,在你的例子图片中,这样的五边形形状的计算是不可能的,因为距离会变化,因为它取决于你测量它的点。
发布于 2015-09-14 12:23:13
对于多边形、多边形和矩形,您可以遍历图层点(使用layer.getLatLngs()),并使用L.LatLng.distanceTo()方法计算到顶点的距离,或者使用L.LineUtil.pointToSegmentDistance()计算到边缘的距离。
圆圈更棘手,因为传单在当前的地图投影中画圆圈,而不是在球面/椭球上画圆圈。因此,对于不同的圆点,从中心到实际绘制的圆之间的测地距离是不同的。您可以使用L.Circle.getRadius()作为近似值,而与边界的距离作为距离的最小和最大。
发布于 2022-05-18 03:10:52
如果您有两个对撞机,并且希望获得它们之间的最小距离,您可能需要使用Physics.Distance。
https://stackoverflow.com/questions/32561670
复制相似问题