Leaflet和Mapbox:使用L.geoJson设置地图框标记的样式?

时间:2015-11-09 12:41:40

标签: leaflet mapbox

我正试图在L.geoJson函数中使用Mapbox的简单样式语法来设置我的标记颜色,如下所示:

L.geoJson(myData, {
    pointToLayer: L.mapbox.marker.style,
    style: function(feature){ 
        return { 'marker-color': '#ffcc00' } 
    }
});

根据mapbox docs,您可以在L.geoJson中使用L.mapbox.marker.style作为mapbox的默认标记,但我似乎无法弄清楚如何使用它来设置样式不同的颜色。

有一个similar question posted here,但我无法在我的客户端代码中使用它。

有谁知道怎么做?这是一个demo fiddle开始。

注意:我知道标记属性可以添加到正在使用的实际数据中,但我需要能够在客户端代码中设置标记的样式,因为我无法访问geoJson featureCollection

1 个答案:

答案 0 :(得分:1)

由于您不能依赖已定义样式属性的GeoJSON数据,因此您只需要" patch"在将每个要素传递给L.mapbox.marker.style之前,请使用您自己的风格。

L.geoJson(myData, {
    // Instead of passing directly L.mapbox.marker.style function,
    // implement your own that will first "patch" the current feature
    // with your desired styling properties.
    pointToLayer: function (feature, latlng) {
        feature.properties = {
            "marker-size": "large",
            "marker-color": "#cc0000"
        };
        // Finally call L.mapbox.marker.style with the "patched" feature.
        return L.mapbox.marker.style(feature, latlng);
    }
});

演示:http://jsfiddle.net/W763Z/6/