样式项javascript¶
- 作者
查尔斯-里克·布尔杰
- 联系
位于mapgears.com的cbourget
- 作者
艾伦布德罗
- 联系
地图齿轮网的Aboudreault
- 最后更新
2015-05-21
介绍¶
以这种方式使用StyleItem可以以编程方式而不是使用标准的MapServer表达式来设置功能的样式。
使用¶
只需通过以下方式声明javascript插件:
MAP
...
LAYER
...
STYLEITEM "javascript://myscript.js" # relative path
CLASS
END
END
END
路径也可以是绝对的。
MAP
...
LAYER
...
STYLEITEM "javascript:///home/user/myscript.js" # absolute path
CLASS
END
END
END
javascript插件必须实现一个名为 styleitem 这将被自动调用。此函数必须返回以下两个选项之一:
样式定义(纯字符串)
具有一个或多个样式的类定义(纯字符串)
备注
每次分析一个特性,每个特性都调用一个javascript插件。这意味着返回的样式或类仅应用于该特定功能。因此,类块不应包含表达式定义,相应的层不应包含类项定义。
备注
声明空类是必需的
对要素属性的访问通过 shape.attributes JavaScript对象。
可以使用以下javascript函数:
- 警报(str1,str2,…,str)
在MapServer日志中打印一些文本
- 打印(str1,str2,…,str)
在MapServer日志中打印一些文本
- 需要(路径_to_lib1,路径_to_lib2,…,路径_to_lib)
包括一个或多个javascript库
例1。单一样式定义¶
此示例返回单个样式定义…
function styleitem() {
//Make symbol size 14 or 7
var size = shape.attributes.NAME.length > 10 ? 14:7;
var style = "STYLE SIZE " + size + " SYMBOL 'circle'";
var red = Math.random()*255;
var green = Math.random()*255;
var blue = Math.random()*255;
style += "COLOR " + red + " " + green + " " + blue + " END";
//Return style to MapServer
return style;
}
例2。用多种样式定义初始化¶
此示例返回具有多个样式定义的单个类…
function styleitem() {
var cls = "CLASS";
//Make symbol size 14 or 7
var size = shape.attributes.NAME.length > 10 ? 14:7;
var style1 = "STYLE SIZE " + size + " SYMBOL 'circle'";
var style2 = "STYLE SIZE " + size + " SYMBOL 'cross'";
var red = Math.random()*255;
var green = Math.random()*255;
var blue = Math.random()*255;
style1 += "COLOR " + red + " " + green + " " + blue + " END";
style2 += "COLOR " + red + " " + green + " " + blue + " END";
cls += " " + style1 + " " + style2 + " END";
//Return class to MapServer
return cls;
}
例3。在MapServer日志中打印日志¶
此示例在mapserver日志中打印一些javascript日志。
MAP
...
CONFIG "MS_ERRORFILE" "/tmp/mapserver.log"
DEBUG 1
LAYER
...
STYLEITEM "javascript://myscript.js"
CLASS
END
END
END
function styleitem() {
//Print some logs in MapServer logs
alert("Processing feature " + shape.attributes.NAME)
//Make symbol size 14 or 7
var size = shape.attributes.NAME.length > 10 ? 14:7;
var style = "STYLE SIZE " + size + " SYMBOL 'circle'";
var red = Math.random()*255;
var green = Math.random()*255;
var blue = Math.random()*255;
style += "COLOR " + red + " " + green + " " + blue + " END";
//Return style to MapServer
return style;
}