使用外部 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);
});
我有一张带有外部 GeoJSON 和搜索框功能的地图。我在显示弹出窗口时遇到问题。标记显示并且过滤器当前工作正常。我看了几个建议
这是我的 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);
});