我在Mapbox中使用此功能,使用geoJson来使用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是否会以某种方式干扰?我怎样才能使它发挥作用?
答案 0 :(得分:1)
除了一个语法错误外,一切正常:
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
中的相同情况。