Mapbox simplestyle阻止popupContent?使用pointToLayer和onEachFeature

时间:2014-06-02 16:27:04

标签: javascript geocoding leaflet geojson mapbox

我在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是否会以某种方式干扰?我怎样才能使它发挥作用?

1 个答案:

答案 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中的相同情况。

Working JSFiddle