Leaflet Control Search:打开Popup搜索结果

时间:2014-04-14 19:50:14

标签: search popup leaflet

我正在使用精彩的插件Leaflet.Control.Search来搜索我地图上的标记(来自geoJson标记组) - 效果很好。

我现在只有一个简单的问题: 如何为搜索结果标记打开弹出窗口? 我正在使用带有弹出窗口(点击时打开)的自定义标记图标已经绑定到它们 - 但是我想通过搜索找到它后自动打开相应的弹出窗口。

我的代码如下所示:

var searchControl = new L.Control.Search({layer: markers2, propertyName: 'Name', circleLocation:true});

    searchControl.on('search_locationfound', function(e) {

            e.layer.bindPopup(feature.properties.Name).openPopup();

    }).on('search_collapsed', function(e) {
            markers2.resetStyle(layer);
    });

    map.addControl( searchControl );  //inizialize search control

并认为它可能适用于该行:

e.layer.bindPopup(feature.properties.Name).openPopup();

但不幸的是它没有..;)

-

哦,还有第二个问题:目前我只搜索1个geoJson图层(“markers2”) - 是否有人知道是否可以一次搜索多个图层?< / p>

有什么建议吗?我要感谢任何帮助,提前谢谢!

2 个答案:

答案 0 :(得分:3)

得到它:它的工作方式如下:e.layer.openPopup()。openOn(map);

答案 1 :(得分:1)

event.layer仅为预加载图层设置,如果您通过ajax,jsonp或callData搜索标记.. event.layer未定义。

var geojsonLayer = new L.GeoJSON(data, {
        onEachFeature: function(feature, marker) {
            marker.bindPopup(feature.properties.name);
        }
    });

map.addLayer(geojsonLayer);

var controlSearch = new L.Control.Search({layer: geojsonLayer, initial: false});

controlSearch.on('search_locationfound', function(event) {
    event.layer.openPopup();
});

看看GeoJSON演示: http://labs.easyblog.it/maps/leaflet-search/examples/geojson-layer.html