【发布时间】:2020-04-02 22:13:33
【问题描述】:
类似于Search for markers in a markercluster group Leaflet-MarkerCluster
但我在Marker Cluster 之上使用Control group,因此它们将在单击单选按钮时显示。
var map = L.map("map"),
parentGroup = L.markerClusterGroup(options), // Could be any other Layer Group type.
// arrayOfMarkers refers to layers to be added under the parent group as sub group feature
mySubGroup = L.featureGroup.subGroup(parentGroup, arrayOfMarkers);
parentGroup.addTo( map );
mySubGroup.addTo( map );
我正在尝试实现 Leaflet Search - 但根据文档所述,它需要一个 group layer 标记作为它工作的第二个参数。问题是使用L.featureGroup.subGroup 需要一个标记数组。
尝试在运行时迭代 mySubGroup 以使用 Leaflet eachLayer 获取标记层,但这将复制我在地图上的标记数量,以便搜索工作。
var markersLayer = new L.LayerGroup().addTo( this.map );
forEach( mySubGroup, layers => {
layers.eachLayer( function (layer ) {
console.log ( layer );
markersLayer.addLayer( layer );
})
});
map.addControl( new L.Control.Search({layer: markersLayer}) );
【问题讨论】:
-
在eachLayer函数中调用
layers.removeLayer(layer) -
@FalkeDesign 这将删除我的
mySubGroup集群并用单点标记替换它 -
然后不要将图层组添加到地图
var markersLayer = new L.LayerGroup()否则您将始终复制标记。但我不知道这是否适用于 SearchControl
标签: javascript leaflet leaflet.markercluster