Javascript 更改传单图层中每个要素的样式

Javascript 更改传单图层中每个要素的样式,javascript,leaflet,geojson,Javascript,Leaflet,Geojson,我一直在研究这个问题 在我的传单应用程序中,我有一个jQuery下拉列表,选中该下拉列表后,将激发一个以状态名称为参数的函数。我想用那个州的名字来更新叶绿素地图 更改传单图层样式的模式是什么?我是否应该再次创建使用L.geoJson()创建的层?似乎这些层是用这种方法在彼此的顶部绘制的 如果需要,我可以提供一把小提琴。这里的诀窍是用不同的值再次调用setStyle。要扩展by@tmcw,策略是将一个函数传递给geojsonLayer.eachLayer(),该函数会更改geojsonLayer中

我一直在研究这个问题

在我的传单应用程序中,我有一个jQuery下拉列表,选中该下拉列表后,将激发一个以状态名称为参数的函数。我想用那个州的名字来更新叶绿素地图

更改传单图层样式的模式是什么?我是否应该再次创建使用
L.geoJson()
创建的层?似乎这些层是用这种方法在彼此的顶部绘制的

如果需要,我可以提供一把小提琴。

这里的诀窍是用不同的值再次调用
setStyle

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

下面是一些代码,演示了我从@tmcw引用的网站上发布的代码中提取和简化的这一策略。我的代码示例根据每个要素实例上指定属性的值更改
geojsonLayer
中每个要素实例的样式

var geojsonLayer=L.geoJson(…);//在外部作用域中声明的GeoJSON层
函数restyleLayer(propertyName){
geojsonLayer.eachLayer(函数(featureInstanceLayer){
propertyValue=featureInstanceLayer.feature.properties[propertyName];
//您的函数用于确定特定对象的填充颜色
//属性名称和值。
var myFillColor=getColor(propertyName,propertyValue);
featureInstanceLayer.setStyle({
fillColor:myFillColor,
填充不透明度:0.8,
重量:0.5
});
});
}
restyleLayer(“myProperty”);

传单的官方文件说明:

“样式”选项可用于以两种不同的方式设置要素的样式。首先,我们可以通过考试 以相同方式设置所有路径(多段线和多边形)样式的简单对象

或者,我们可以传递一个函数,该函数根据各个特征的样式设置各个特征的样式 财产。在下面的示例中,我们检查“party”属性并设置多边形的样式 因此

不幸的是,样式的名称不等于css样式名称。 例如,使用“颜色”代替“笔划”,使用“重量”代替“笔划宽度”:


传单的这一部分似乎非常复杂。但是谢谢你!
L.geoJSON(states, {
    style: function(feature) {
        switch (feature.properties.party) {
            case 'Republican': return {color: "#ff0000"};
            case 'Democrat':   return {color: "#0000ff"};
        }
    }
}).addTo(map);