我们了解到Vector layer能够完成很多工作,这节将更深入的探讨在矢量图层上怎样定制要素的外观,定制矢量要素的外观工作与control的外观定制非常相似,但是在矢量要素外观的定制上采用Style和StyleMap对象来代替CSS,由于矢量图层不使用栅格图像,我们可以用这种方式定制矢量图层。指定SVG(或者VML或Canvas)元素的样式。
我们很容易通过修改默认样式文件来改变要素的样式,但是在矢量图层的要素,需要引用Rule类和Filter类,通过他们指定要素的样式。我们能做的不仅仅是改变颜色。我们可以改变大小,透明线风格,和各种各样的其他特性。
采用样式有三种方式:
%使用Style和StyleMap对象;
%直接在图层上引用symbolizer;
%直接对要素才有symbolizer(但是只能在从数据源中读取数据是出现);
StyleMap本质上是一种Style对象映射到要素的各种不同状态或者意图,比如说,要素对象通常设置为默认意图,当你select某一要素时,它获得select意图,当然它的样式也对应着select意图的样式。
Style对象包含样式符号库或者说是很多风格属性和值。我们利用符号库去定义样式,可以将符号库应用于Style对象、图层对象、甚至单个要素。
2. symbolizer符号库
symbolizer是个由健值对组成的匿名对象,这些健值对都是来描述样式属性的,与CSS很相似。例如 { fillColor: '#336699', strokeWidth: 4 }就是个符号库,它说明要素的颜色是#336699,笔画宽度是4个像素。
当创建Style对象来指定某些要素的样式属性时我们使用symbolizer,我们直接在矢量图层上使用符号库,也可以在数据源文件中读取样式信息。