为了账号安全,请及时绑定邮箱和手机立即绑定

通过功能组添加传单搜索

通过功能组添加传单搜索

米脂 2022-06-09 17:23:57
类似于Search for marker in a markercluster group Leaflet-MarkerCluster但是我在Marker Cluster顶部使用了一个Control 组,因此它们将在单击单选按钮时显示。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}) );
查看完整描述

1 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

解决了这个问题——尽管它的效率很低。如果您能找到更优雅的解决方案来避免重复,请随时将其作为答案!


 var title = layer.options.title;


// iterate through the cluster points

forEach( mySubGroup, layers => {

    layers.eachLayer(function (layer) {

        var title = layer.options.title; // match the search title to marker title


         marker = new L.Circle(new L.LatLng(layer.getLatLng().lat,layer.getLatLng().lng),

            {radius: 0, title: title, fill: 'red', fillOpacity: 0, opacity: 0 }); // Create an invisible L circle marker for each cluseter marker 



        markersLayer.addLayer(marker);


    })

});

然后,您将 markerLayer 添加到 Leaflet Search



查看完整回答
反对 回复 2022-06-09
  • 1 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信