样式项javascript¶
- 作者
查尔斯-里克·布尔杰
- 接触
位于mapgears.com的cbourget
- 作者
Alan Boudreault
- 接触
aboudreault at mapgears.com
- 最后更新
2015-05-21
使用¶
只需通过以下方式声明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函数:
- alert(str1, str2, ..., str)
在MapServer日志中打印一些文本
- print(str1, str2, ..., str)
在MapServer日志中打印一些文本
- require(path_to_lib1, path_to_lib2, ..., path_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;
}