在动画中动态更改多边形的颜色?

Owe*_*wen 25 javascript leaflet

对于熟悉Leaflet的人,你知道一种动态改变多边形颜色的方法吗?例如,采用如下定义的圆:

window.circle = L.circle([51.508, -0.11], 500, {
color: 'red',
fillColor: '#ffffff',
    fillOpacity: 0.5
}).addTo(map);
Run Code Online (Sandbox Code Playgroud)

然后,在用户点击某个界面上某个按钮后(例如),我想改变圆圈的颜色,如下所示:

window.circle.options.fillColor = "#dddddd";
Run Code Online (Sandbox Code Playgroud)

代码更改window.circle.options.fillColor的值,但更改不会通过更改地图上多边形的颜色来反映.我已经四处寻找但没找到任何东西.有任何想法吗?

谢谢.

tbi*_*icr 37

L.Circleextends L.Path(http://leafletjs.com/reference.html#path),有方法setStyle( <Path options> object ),你可以应用新样式window.circle.setStyle({fillColor: '#dddddd'});

  • 这似乎很好地改变了外观.但是,当我尝试这个时,它似乎没有反映在代码中的那一层,以便我保存.在设置样式后我应该以某种方式更新图层吗? (4认同)

Bim*_*Grg 6

如果你正在寻找这样的东西:

const circle = L.circle([lat, lng], {
   style: style,
   onEachFeature: onEachFeature,
});
Run Code Online (Sandbox Code Playgroud)

这些选项可用于 geoJson 数据,即:L.geojson()..... :D

所以,对于多边形。尝试,

circle.setStyle({
    color: 'red'
});
Run Code Online (Sandbox Code Playgroud)


小智 6

我的地图中有一组多边形,此代码可以动态更改每个多边形的填充颜色:

// 'file' is a geojson layer
L.geoJSON(file, {
    onEachFeature: colorlayer,
    style: {
        color: "#00008c",
        opacity: 0.6,
        fillColor: '#333333',
        fillOpacity: 0
    }
}).addTo(map);

function colorlayer(feature, layer) {
    layer.on('mouseover', function (e) {
        layer.setStyle({
            fillOpacity: 0.4
        });
    });
    layer.on('mouseout', function (e) {
        layer.setStyle({
            fillOpacity: 0
        });
    });
}
Run Code Online (Sandbox Code Playgroud)