使用外部 GeoJSON 创建 Mapbox 弹出窗口时遇到问题

Trouble Creating Mapbox Popups with External GeoJSON

我有一张带有外部 GeoJSON 和搜索框功能的地图。我在显示弹出窗口时遇到问题。标记显示并且过滤器当前工作正常。我看了几个建议 and here。这似乎是一个简单的解决方案,但我无法获得任何建议的解决方案。我想我遗漏了一些小细节。非常感谢任何帮助。

这是我的 GeoJSON 变量和我一直在尝试的弹出窗口。

var locations = L.mapbox.featureLayer()
.setGeoJSON(geojson)
.addTo(map)
    .on('ready', function(){

        locations.eachlayer(function(layer){
            var prop = layer.feature.properties;
            var popup = '<b>' + prop.state + '</b>';
                locations.bindPopup(popup);

    })

 })
.addTo(map);

您可以删除 'ready' 回调,只需执行

var locations = L.mapbox.featureLayer()
.setGeoJSON(geojson)
.addTo(map)

locations.eachLayer(function (layer) {
  var prop = layer.feature.properties;
  var popup = '<b>' + prop.state + '</b>';
  layer.bindPopup(popup);
})

感谢@snkashis 的帮助,但这并没有解决问题。我收到了 Mapbox 的回复,其中包含一个可行的解决方案。他们指示我在使用过滤器时需要使用 'layeradd' 参数。他们提供的解决方案如下。

var locations = L.mapbox.featureLayer()
  .setGeoJSON(geojson)
  .addTo(map);

locations.on('layeradd', function(e){
  var prop = e.layer.feature.properties;
  var popup = '<b>' + prop.state + '</b>';
  e.layer.bindPopup(popup);
});