我在带有geoJson的Mapbox中使用此功能,以使用simplestyle中的样式标记
var groupThree = new L.LayerGroup();
L.geoJson(layerThree, {
pointToLayer: L.mapbox.marker.style,
style: function (feature) {
return feature.properties;
}
}, {
onEachFeature: onEachFeature
}).addTo(groupThree);
但是,当我运行它时,单击标记不能弹出一个窗口。这是popupContent的功能:
var popupContent = "";
function onEachFeature(feature, layer) {
if (feature.properties && feature.properties.popupContent) {
popupContent = feature.properties.popupContent;
}
layer.bindPopup(popupContent);
}
Here's my fiddle显示没有simplestyle的标记具有可正常工作的弹出窗口,而具有simplestyle的标记具有无法正常工作的弹出窗口。
pointToLayer和onEachFeature是否以某种方式干扰?我该如何运作?
最佳答案
一切正常,除了一个语法错误:
var groupTwo = new L.LayerGroup();
L.geoJson(layerTwo, {
pointToLayer: L.mapbox.marker.style,
style: function(feature) { return feature.properties; }
}, {onEachFeature: onEachFeature}).addTo(groupTwo);
^
^
就在这里,您将
onEachFeature
作为单独的L.geoJson
参数传递,但是L.geoJson
中没有第三个参数。因此,基本上,您创建了两个对象,而不是一个。固定:
var groupTwo = new L.LayerGroup();
L.geoJson(layerTwo, {
pointToLayer: L.mapbox.marker.style,
style: function(feature) { return feature.properties; },
onEachFeature: onEachFeature
}).addTo(groupTwo);
groupThree
中的情况相同。Working JSFiddle