【问题标题】:leaflet popup not opening for a particular marker传单弹出窗口未针对特定标记打开
【发布时间】:2015-07-22 21:22:42
【问题描述】:

使用leaflet,在向地图添加图层时调用以下函数。此函数为每个功能添加弹出窗口。

当我点击它们时它们会工作,但我无法让 bindPopup.openPopup() 工作,所以它会在没有被点击的情况下打开。

没有任何错误,但弹出窗口在没有被点击的情况下无法打开。

var popupToOpen = null;
var clickedLocationId = 0;
function onEachFeature(feature, layer) {
    if (feature.properties && feature.properties.UserName) {        
        if (feature.properties.MarkerId == clickedLocationId) {            
          layer.bindPopup("<div id='unlockLocationId'>" + feature.properties.MarkerId + "</div><div>" + feature.properties.UserName + "</div>").openPopup();
        } else {
            layer.bindPopup("<div id='unlockLocationId'>" + feature.properties.MarkerId + "</div><div>" + feature.properties.UserName + "</div>");
        }
    }
}

【问题讨论】:

    标签: javascript leaflet


    【解决方案1】:

    我已经尝试过您尝试的方式,但弹出窗口没有打开。好吧,您可以尝试以另一种方式打开弹出窗口。

    创建一个函数,在其中迭代 geojson 层并在 id 匹配时打开弹出窗口。这是函数

    function openMarkerPopup(id){
        geojson.eachLayer(function(feature){
            if(feature.feature.properties.id==id){
                feature.openPopup();
            }
    
        });
    }
    

    只需将所需的 id 传递给此函数,它就可以工作。

    openMarkerPopup(108);
    

    这是一个有效的fiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      • 1970-01-01
      • 2020-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多