我正在使用精彩的插件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>
有什么建议吗?我要感谢任何帮助,提前谢谢!
答案 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