我正在使用Javascript和Openlayers库来为地图上的矢量要素设置样式。 我写了以下脚本:
var gidS = response[Object.keys(response)[Object.keys(response).length - 1]] // get the data from json obj
// ADD STYLING - DIFFERENT COLORS FOR WHAT IS COMPLETE
var styleContext = {
getColor: function (feature) {
var objectKeys = Object.keys(gidS); // use objectkeys to loop over all the object properties //use it to get the length
for (var i = 0; i < objectKeys.length; i++){
//alert(i);
//////////////////
if(gidS[i][1]=="MT"){
//alert(gidS[i][1]);
return "green";
}
else if(gidS[i][1]=="IRU"){
alert(gidS[i][1]);
return "#780000"; //no images on this line
}
///////////////////////
}
}
};
如果我在没有if条件的情况下(在斜杠之间)运行脚本,那么我会根据gidS的最大长度得到正确的i增量值。 但是当我由于某种原因包含if语句时,变量i不会增加。它仍为0。
EDITED
getColor函数稍后会像这样执行
// define Style
var defaultStyle = new OpenLayers.Style({
fillColor: "${getColor}",
fillOpacity:"1",
strokeColor: "${getColor}",
strokeOpacity: "1",
strokeWidth: 8,
cursor: "pointer",
pointRadius: 8
}, {
context: styleContext
});
我在这里做错了什么? 非常感谢。 d。
答案 0 :(得分:1)
捕获变量中的颜色,例如:color
,并在函数末尾返回它:
getColor: function (feature) {
var color = '';
var objectKeys = Object.keys(gidS); // use objectkeys to loop over all the object properties //use it to get the length
for (var i = 0; i < objectKeys.length; i++){
if(gidS[i][1]=="MT"){
color = "green";
}
else if(gidS[i][1]=="IRU"){
color = "#780000"; //no images on this line
}
}
return color;
}
通过循环遍历对象的每个属性,然后返回,您可以有效地获得最后可能匹配的“MT”或“IRU”,如果有的话。如果您在找到匹配项后立即退出该功能,那么您将获得第一个匹配的“MT”或“IRU”。
例如,给定设置:[[435,'IRU'],[34324,'MT'],[343,'MT']]
我的方法将返回green
,您的方法将返回#780000
。
答案 1 :(得分:-1)
不使用退货,使用后立即停止。
试试这个,我不知道gidS。
if(gidS[i][1]=="MT"){
gidS[i]['color']='green';
}
else if(gidS[i][1]=="IRU"){
gidS[i]['color']='#780000';
}