javascript - 更改 Leaflet GeoJSON 层中每个功能的样式

标签 javascript leaflet geojson

我一直在研究Leaflet Chloropleth example .

在我的 Leaflet 应用程序中,我有一个 jQuery 下拉列表,当它被选中时,会触发一个函数,该函数将状态名称作为参数。我想使用该州名称来更新 Chloropleth map 。

更改 Leaflet GeoJSON 图层样式的模式是什么?我应该重新创建我用 L.geoJson() 创建的层吗?看起来好像这些层是通过这种方法在彼此之上绘制的。

如果需要,我可以提供 Fiddle。

最佳答案

扩展answer @tmcw 的策略是将一个函数传递给 geojsonLayer.eachLayer(),该函数会更改 geojsonLayer 中每个要素实例的样式。

这里有一些代码演示了我从 Mapbox example page 上发布的代码中提取和简化的策略。由 @tmcw 引用。我的代码示例根据每个要素实例上指定属性的值更改了 geojsonLayer 中每个要素实例的样式。

var geojsonLayer = L.geoJson(...); // a GeoJSON layer declared in the outer scope

function restyleLayer(propertyName) {

    geojsonLayer.eachLayer(function(featureInstanceLayer) {
        propertyValue = featureInstanceLayer.feature.properties[propertyName];

        // Your function that determines a fill color for a particular
        // property name and value.
        var myFillColor = getColor(propertyName, propertyValue);

        featureInstanceLayer.setStyle({
            fillColor: myFillColor,
            fillOpacity: 0.8,
            weight: 0.5
        });
    });
}

restyleLayer('myProperty');

关于javascript - 更改 Leaflet GeoJSON 层中每个功能的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25773389/

相关文章:

javascript - 剪切文本和阴影

r - 如何在 R 中同步 map

javascript - 传单 map 上的船舶移动

svg - GeoJson 世界数据库

javascript - 使用 geojson 确定给定地理区域与哪些其他地理区域共享边界

javascript - 自动化提交表单

javascript - 如何在不克隆包装器的情况下克隆 div

flutter - 如何使用带有 flutter 的传单 "openstreetmap"?

javascript - 为什么 D3.js 不显示我的 geoJSON 文件?

javascript - 如何使用语义 UI 'add content' javascript 行为?