如何在传单

时间:2016-11-04 11:31:32

标签: javascript jquery json leaflet geojson

我需要传递2种风格,我现在有:

第一种风格:

function style(feature) {
    return {
        weight: 2,
        opacity: 1,
        color: 'white',
        dashArray: '3',
        fillOpacity: 0.7,
        fillColor: getColor(feature.properties.density)
    };
}

我这样做:

var classNameMap = <?php echo JSON_encode($classesForCountries); ?>;
geojson = L.geoJson(statesData, {
    style: style,
    style: function(feature) {
        var classes = classNameMap[feature.properties.name];
        return {className: classes};
    },
        onEachFeature: onEachFeature
}).addTo(map);

但忽略了第一个style

我尝试将其作为数组传递:

geojson = L.geoJson(statesData, {
    style: [style, function(){
        var classes = classNameMap[feature.properties.name];
        return {className: classes};
    }],
        onEachFeature: onEachFeature
}).addTo(map);

但是,第一种风格被忽略了。

leaflet docs if this can help, here

3 个答案:

答案 0 :(得分:2)

这是解决方案:

var classNameMap = <?php echo JSON_encode($classesForCountries); ?>;
function style(feature) {
    var classes = classNameMap[feature.properties.name];
    return {
        weight: 2,
        opacity: 1,
        color: 'white',
        dashArray: '3',
        fillOpacity: 0.7,
        fillColor: getColor(feature.properties.density),
        className: classes
    };
}

geojson = L.geoJson(statesData, {
    style: style,
        onEachFeature: onEachFeature
}).addTo(map);

答案 1 :(得分:2)

不熟悉leaflet,但使用重复键从js透视图查看肯定会使用最后一个键条目覆盖其值。

如果您尝试追加style1和style2,因为style的两个函数都返回一个对象,您可以$.extend执行此操作。

function style_1(feature) {
    return {
        weight: 2,
        opacity: 1,
        color: 'white',
        dashArray: '3',
        fillOpacity: 0.7,
        fillColor: getColor(feature.properties.density)
    };
}

...
style: function(feature) {
    // Now the logic is a simple hashmap look-up
    var style1 = style_1(feature);
    var classes = classNameMap[feature.properties.name];
    var finalStyle = $.extend(style1, {className: classes});
    return finalStyle;
}
...

答案 2 :(得分:0)