首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传单:如何计算中心点到边缘的距离

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

Stack Overflow用户
提问于 2015-09-14 09:43:06
回答 3查看 5K关注 0票数 0

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

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

代码语言:javascript
复制
var layer = omnivore.wkt.parse(geometry);
var center = layer.getBounds().getCenter();

我不知道如何从中心到边缘的距离。有可能吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-14 11:45:16

对于L.Circle来说,这是可能的,如果它是完全正方形的,那么只对L.Rectangle来说是可能的。

要得到L.Circle的半径实际上很简单。它有一个getRadius方法,它将以米为单位返回半径。

代码语言:javascript
复制
var radius = circle.getRadius();

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

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

代码语言:javascript
复制
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

这里的问题是,如果你没有一个完美的广场,西北/东北和西北/西南之间的距离将是不同的。尽管如此,你可以理解,在你的例子图片中,这样的五边形形状的计算是不可能的,因为距离会变化,因为它取决于你测量它的点。

票数 5
EN

Stack Overflow用户

发布于 2015-09-14 12:23:13

对于多边形、多边形和矩形,您可以遍历图层点(使用layer.getLatLngs()),并使用L.LatLng.distanceTo()方法计算到顶点的距离,或者使用L.LineUtil.pointToSegmentDistance()计算到边缘的距离。

圆圈更棘手,因为传单在当前的地图投影中画圆圈,而不是在球面/椭球上画圆圈。因此,对于不同的圆点,从中心到实际绘制的圆之间的测地距离是不同的。您可以使用L.Circle.getRadius()作为近似值,而与边界的距离作为距离的最小和最大。

票数 2
EN

Stack Overflow用户

发布于 2022-05-18 03:10:52

如果您有两个对撞机,并且希望获得它们之间的最小距离,您可能需要使用Physics.Distance

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32561670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档