使用mapbox创建的多边形的中心

时间:2016-02-17 22:36:25

标签: javascript polygon mapbox

我想知道如何使用Mapbox中的代码计算多边形的中心:https://www.mapbox.com/mapbox.js/example/v1.0.0/show-polygon-area/ 我想在创建多边形的中心后放置一个标记。 提前谢谢。

2 个答案:

答案 0 :(得分:2)

要计算多边形的中心,首先需要得到它的边界,可以使用getBounds的{​​{1}} L.Polygon方法来计算它L.Polyline

  

返回折线的LatLngBounds。

http://leafletjs.com/reference.html#polyline-getbounds

它返回一个L.LatLngBounds对象,该对象具有getCenter方法:

  

返回边界的中心点

http://leafletjs.com/reference.html#latlngbounds-getcenter

它返回一个L.LatLng对象,您可以使用该对象创建L.Marker

var polygon = new L.Polygon(coordinates).addTo(map);

var bounds = polygon.getBounds();

var center = bounds.getCenter();

var marker = new L.Marker(center).addTo(map);

或者你可以简写它:

var polygon = new L.Polygon(coordinates).addTo(map);

var marker = new L.Marker(polygon.getBounds().getCenter()).addTo(map);

在Mapbox示例中使用它看起来像这样:

function showPolygonArea(e) {
    featureGroup.clearLayers();
    featureGroup.addLayer(e.layer);

    // Here 'e.layer' holds the L.Polygon instance:
    new L.Marker(e.layer.getBounds().getCenter()).addTo(featureGroup);

    e.layer.bindPopup((LGeo.area(e.layer) / 1000000).toFixed(2) + ' km<sup>2</sup>');
    e.layer.openPopup();
}

答案 1 :(得分:0)

您可以使用 turf library.turf.center(features) 在所有输入特征的绝对中心点处为您提供一个点特征。您的案例中的要素将是您可以使用 mapboxDraw.getAll()

获得的所选多边形