2015-04-18 91 views
1

濾波標記後,我已經從Mapbox外部GeoJSON的文件設置的功能和結合彈出窗口下面的例子中,這些特徵在https://www.mapbox.com/mapbox.js/example/v1.0.0/custom-popup/彈出窗口不再功能mapbox

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/

顯示以下的例子中選擇的特徵

彈出窗口在我第一次顯示頁面時正確顯示,並且過濾器正確選擇要顯示的標記的子集,但在過濾器被觸發後,彈出窗口不再顯示在鼠標懸停上。過濾完成後,是否需要重新綁定彈出窗口(通過顯式觸發eachLayer函數或其他)?

回答

0

重新綁定彈出窗口爲我解決了這個問題。

+0

謝謝!重新綁定取得了訣竅! – yoki

+0

好吧,它的工作原理是彈出窗口不再消失,但是每個彈出窗口現在只顯示geojson中的最後一條記錄。你能分享一下你如何解決問題的代碼嗎? – TWS

+0

在設置過濾器函數後立即將layerPopup包裝在layer.foreach()中。 myLayer.eachLayer(function(layer){ var content =「Info goes here」; layer.bindPopup(content,{{ closeButton:false}); }); – yoki