传单(markerCluster + searchControl):如何在搜索时打开弹出窗口之前对簇进行蜘蛛抓取

时间:2019-04-26 15:31:42

标签: javascript leaflet

我正在从事传单项目。我正在与Leaflet-markerCluster一起使用Leaflet搜索。 我的一些标记在完全相同的坐标上。如果一切正常,如果我要搜索的标记不在群集中(发现标记时我将打开弹出窗口)。 当我搜索群集中的标记时,如果群集之前没有打开过,它将不会打开。 因此,如果我是对的,则需要在打开Popup之前打开集群。但我不知道该怎么做:)有人可以帮助我吗?谢谢

这是markerCluster和searchControl的代码:


    var markers = L.markerClusterGroup({ maxClusterRadius: 30 });
    markers.addLayer(featuresLayer);
    mymap.addLayer(markers);

    var searchControl = new L.Control.Search({
    layer: L.featureGroup([markers]),
    propertyName: 'name',
    marker: false,
    });

    searchControl.on('search:locationfound', function(e) {
    if (e.layer._popup)
    e.layer.openPopup();

    }).on('search:collapsed', function(e) {
    featuresLayer.eachLayer(function(layer) {
    featuresLayer.resetStyle(layer);
    });
    });

    mymap.addControl(searchControl);

2 个答案:

答案 0 :(得分:0)

您是否尝试将zoomToShowLayer方法添加到侦听器?

markers.zoomToShowLayer(marker, function () {
                    marker.openPopup();
                });

答案 1 :(得分:0)

我不知道我是否使用正确,但是出现错误

未捕获的TypeError:无法读取未定义的属性'_zoom'

这是我使用您的示例的代码的一部分

searchControl.on('search:locationfound', function() {
    markers.zoomToShowLayer(markers, function (e) {
                        e.layer.openPopup();
                    });
}).on('search:collapsed', function(e) {
  featuresLayer.eachLayer(function(layer) {
    featuresLayer.resetStyle(layer);
  });
});