Jam*_*ing 5 javascript svg leaflet
我希望通过设置 geojson 功能的className. 如果直接放在功能上,效果非常好,如下所示:
L.geoJson(geojson, {
onEachFeature: function (feature, layer) {
layer.setStyle({className: 'grid-cell'});
}
}).addTo(map);
Run Code Online (Sandbox Code Playgroud)
使用 .css 文件中定义的样式
path.grid-cell{
stroke-opacity: 1;
stroke: #444;
fill: #aaa;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果添加到功能的事件回调中,它将不起作用:
L.geoJson(geojson, {
onEachFeature: function (feature, layer) {
layer.on('click', function(e){
this.setStyle({className: 'grid-cell'});
this.bringToFront();
});
}
}).addTo(map);
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,除了、 例如、、等之外,setStyle({<style_options>});这两种情况都适用于所有其他L.path选项。 classNamecolorfillOpacityweight
例如
L.geoJson(geojson, {
onEachFeature: function (feature, layer) {
// this works
layer.setStyle({color: '#faa', fillOpacity: 0.4, weight: 1});
// this works too
layer.setStyle({className: 'grid-cell'});
layer.on('click', function(e){
// and this works
layer.setStyle({color: '#afa', fillOpacity: 0.4, weight: 2});
// BUT THIS DOES NOT WORK
this.setStyle({className: 'grid-cell'});
this.bringToFront();
});
}
}).addTo(map);
Run Code Online (Sandbox Code Playgroud)
知道这里发生了什么吗? 这是一个说明这个问题的笨蛋。
有关此问题的讨论,请参见此处: https: //github.com/Leaflet/Leaflet/issues/2662。评论之一:
我认为 setStyle 实际上不应该更改 className。该类并不是真正的样式属性,并且处理
leaflet-类所需的逻辑看起来像是一个 hack。我认为setClassName()oradd/removeClassAPI 会更合适。
| 归档时间: |
|
| 查看次数: |
1882 次 |
| 最近记录: |