好的,因为我已经问了一个很长的问题,但是由于有一段时间没有收到任何新的答复,并且也不想在细节上感到困惑,所以我将尽力保持这一简单。
如果我没记错的话,setStyle
用于命名的特定功能的函数如下:
var bounds = [[54.559322, -5.767822], [56.1210604, -3.021240]];
var rect = L.rectangle(bounds, {color: "#ff7800", weight: 1}).addTo(map);
rect.setStyle({color: "#4B1BDE"});
...这会将颜色从橙色变为蓝色。我也知道resetStyle()
将样式恢复为原始样式的功能。
这是我设置GeoJSON样式的方式:
var everything = L.geoJson(myfile, {
onEachFeature: function(feature){
array_of_layers.addLayer(feature);
},
style: function(feature){
switch(feature.properties.name){
case "belgium": return belgium_style; break;
case "bosnia": return bosnia_style; break;
case "denmark": return denmark_style; break;
case "great_britain": return britain_style; break;
case "greece": return greece_style; break;
case "italy": return italy_style; break;
case "serbia": return serbia_style; break;
case "spain": return spain_style; break;
}
}
});
我想做的就是在代码的后面部分将一个国家/地区设为蓝色,将其他国家/地区设为灰色。将所有国家/地区涂成灰色,然后将其涂成蓝色,这是两步操作。
首先,我需要这样一个循环,该循环将遍历每个功能并使setStyle()
所有国家/地区呈灰色。如果我只是everything.setStyle({color: "#4B1BDE"})
某物,它会起作用吗?
第二件事是,(这让我不眠之夜)如何从一组GeoJSON多边形中仅选择一个要素进行处理?只是我需要涂成蓝色的国家。
如果是鼠标悬停的问题,我可以像在Leaflet教程中那样放置一个事件侦听器。但是,无论用户如何交互,我都想通过使用名称来调用样式来设置和重置样式,就像在上面的矩形中所做的那样。
setStyle()
功能。