gpt4 book ai didi

javascript - 在 map 框中过滤标记后,弹出窗口不再起作用

转载 作者:行者123 更新时间:2023-11-28 07:25:26 25 4
gpt4 key购买 nike

我已经按照 https://www.mapbox.com/mapbox.js/example/v1.0.0/custom-popup/ 中的示例从 Mapbox 中的外部 geoJson 文件设置了功能,并将弹出窗口绑定(bind)到这些功能。

var myLayer = L.mapbox.featureLayer(bldgData).addTo(map);

myLayer.eachLayer(function(layer) {

// set up popup for each marker
var content = "";
var props = layer.feature.properties;
var imagePart = "<img class='popupPic' src='images/thumbnails/" + props.filename + "' ></img>";
var infoPart = "<h3 class='popupInfo'>" + props.bldgName + "</h3><p>" +
props.architect + "<br />" + props.year + "</p>";
content = imagePart + infoPart;

layer.bindPopup(content, {closeButton: false});
});

弹出窗口设置为在鼠标悬停时显示...

myLayer.on('mouseover', function(e) {
e.layer.closePopup();
e.layer.openPopup();
});

myLayer.on('mouseout', function(e) {
e.layer.closePopup();
});

我还按照 https://www.mapbox.com/mapbox.js/example/v1.0.0/filtering-markers/ 中的示例设置了过滤以显示选定的功能

function chooseBldg(){
var bldgs = document.getElementById("buildingTypeMenu").value;

if(bldgs == "all") {
myLayer.setFilter(function(f) {return true;});

}
else {
myLayer.setFilter(function(f) {
return f.properties['buildingType'] === bldgs;
});
}
}

当我第一次显示页面时,弹出窗口显示正确,并且过滤器正确选择要显示的标记子集,但触发过滤器后,鼠标悬停时不再显示弹出窗口。过滤器完成后,我是否需要重新绑定(bind)弹出窗口(通过显式触发 everyLayer 函数或其他函数)?

最佳答案

重新绑定(bind)弹出窗口为我解决了这个问题。

关于javascript - 在 map 框中过滤标记后,弹出窗口不再起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29723547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com