我是JS的新手,下面的查询可能看起来很简单。
查询:我在地图上画了多个圆圈,我需要获取圆圈中所有可用的标记详细信息。
为了实现这一目标,我尝试获取经度的圆心,并计算地图上所有标记与该圆心的距离。如果(距离 <= 半径(结束标记在圆圈中。
- 如何确定圆心。
- 中心和标记之间的距离是如何计算的?
提前感谢..
假设你在某处有类似的东西:
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;
}
}
}
这是一个人为声明功能组的小提琴。
不要犹豫,阅读传单文档,其中包含我使用的几乎所有内容,并且写得很好。