找到使用小叶绘制绘制的圆的中心,并计算2 latlong之间的距离

时间:2017-05-16 06:54:12

标签: leaflet leaflet.draw

对JS来说是新手,以下查询可能看起来很简单。

查询: 我在地图上绘制了多个圆圈,我需要获取圆圈中可用的所有标记详细信息。

为了达到这个目的,我试图在lat中获取圆心并计算地图上所有标记距离圆心的距离。 如果(距离< = radius)结束标记在圆圈中。

  1. 如何确定圆的中心。
  2. 如何计算中心与标记之间的距离?
  3. 先谢谢..

1 个答案:

答案 0 :(得分:2)

让我们假设你在某个地方有这样的东西:

var editableLayers = new L.FeatureGroup();

并且您已将此选项添加到L.Control.Draw:

edit: {
    featureGroup: editableLayers, //REQUIRED!!
    remove: false
}

正如L.Draw文档所说。

现在您可以搜索圈子了:

var circleList = [];
editableLayers.eachLayer( function (l) {
    if (l instanceof L.Circle) {
        circleList.push(l);
    }
});

搜索标记的方法相同:

var markerList = [];
editableLayers.eachLayer( function (l) {
    if (l instanceof L.Marker) {
        markerList.push(l);
    }
});

现在你想要任何圈子内的任何标记:

var markersInside = [];
var i;
for (i=0; i<markerList.length; i++) {
    var j;
    var m = markerList[i];
    var mposition = m.getLatLng();
    for (j=0; j<circleList; j++) {
        var c = circleList[j];
        var cposition = c.getLatLng();
        var cradius = c.getRadius();
        if (cposition.distanceTo(mposition) <= cradius) {
            markersInside.push(m);
            break;
        }
    }
}

Here is a fiddle人工声明featureGroup。

请不要犹豫,阅读leaflet doc,其中包含了我使用过的所有内容,写得非常好。