我想在页面上显示很少的地图,基本上它们都是相同的,除了它们具有根据参数值而不同的不同层。
我编写的代码显示了所有地图上的图层,但样式始终采用循环中变量的最后一个值。在我的情况下,总是取2的值。
我想知道图层的样式与循环值不一致的错误在哪里。
我编写的脚本部分如下
for (variable = 0 ; variable <= 2 ; variable++){
vectorLayers[variable] = new ol.layer.Vector({
source: new ol.source.Vector({
url: '/myLocation/myFiles',
format: new ol.format.GeoJSON()
}),
style: function(feature) {
id = feature.get('reading'+variable);
parameter = id[1];
fill.setColor(
parameter >= 0 && paramter < 0.10 ? lightBlue:
...);
return style;
}
});
答案 0 :(得分:1)
样式函数不会像你期望的那样在for循环中执行。 for循环将首先创建所有图层,然后将为每个图层的每个要素调用样式函数。这就是为什么变量值总是2。 仔细调试你会看到。
编辑1: 编写一个方法,该方法将创建Vector层并在循环内调用它并传递变量值,以便正确维护该值。
for (variable = 0 ; variable <= 2 ; variable++){
vectorLayers[variable] = createVectorLayer(variable);
}
function createVectorLayer(variable) {
var layer = new ol.layer.Vector({
source: new ol.source.Vector({
url: '/myLocation/myFiles',
format: new ol.format.GeoJSON()
}),
style: function(feature) {
id = feature.get('reading'+variable);
parameter = id[1];
fill.setColor(
parameter >= 0 && paramter < 0.10 ? lightBlue:
...);
return style;
}
});
return layer;
}