如何更改OpenLayers样式?
我对网络地图非常、非常陌生。我有一个OpenLayers地图,由PostGis数据库中的形状文件制作,有一个矢量图层,它有默认样式(GeoServer SLD),但我想在用户单击“刷新”按钮时更改矢量图层的样式。我在网上搜索,没有找到简单明了的例子。任何人请帮助我,或者可能有人谁想做同样的,并找到了这个简单的教程?任何帮助都非常感激如何更改OpenLayers样式?,openlayers,geoserver,sld,Openlayers,Geoserver,Sld,我对网络地图非常、非常陌生。我有一个OpenLayers地图,由PostGis数据库中的形状文件制作,有一个矢量图层,它有默认样式(GeoServer SLD),但我想在用户单击“刷新”按钮时更改矢量图层的样式。我在网上搜索,没有找到简单明了的例子。任何人请帮助我,或者可能有人谁想做同样的,并找到了这个简单的教程?任何帮助都非常感激 <script type="text/javascript"> var map; function init() { var b
<script type="text/javascript">
var map;
function init() {
var bounds = new OpenLayers.Bounds(
68.089442, 6.752729,
97.407576, 37.072537);
var options = {
controls: [ new OpenLayers.Control.Navigation(),
new OpenLayers.Control.PanZoom()
],
maxExtent: bounds,
maxResolution: 0.11843675,
projection: "EPSG:4326",
units: 'degrees'
};
map = new OpenLayers.Map ("map", options );
var india = new OpenLayers.Layer.WMS(
"cite:india_state - Tiled",
"http://localhost:8080/geoserver/cite/wms",
{LAYERS: 'cite:india_state',STYLES: 'style',
//format: format,
tiled: true,
tilesOrigin: map.maxExtent.left + ',' + map.maxExtent.bottom
},
{buffer: 0, displayOutsideMaxExtent: true,
isBaseLayer: true,
yx: {'EPSG:4326' : true}
}
);
var style = new OpenLayers.Style();
//rule used for all polygons
var rule_fsa = new OpenLayers.Rule({
symbolizer: {
fillColor: "#ff9a9a",
fillOpacity: 0.5,
strokeColor: "#000000",
strokeWidth: 1,
strokeDashstyle: "dash",
label: "${name}",
labelAlign: "cc",
fontColor: "#333333",
fontOpacity: 0.9,
fontFamily: "Arial",
fontSize: 14
}
});
var rule_highlight = new OpenLayers.Rule({
filter: new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: "classification",
value: "1",
}),
symbolizer: {
fillColor: "#FF7144",
fillOpacity: 0.6,
strokeColor: "#FF0000",
strokeWidth: 2,
strokeDashstyle: "solid",
label: " ${name}",
labelAlign: "cc",
fontColor: "#000000",
fontOpacity: 1,
fontFamily: "Arial",
fontSize: 16,
fontWeight: "600"
}
});
style.addRules([rule_fsa, rule_highlight]);
var polygon = new OpenLayers.Layer.Vector("Polygon", {
Style: 'style',
rendererOptions: {zIndexing: true}
});
map.addLayers([india,polygon]);
map.zoomToMaxExtent();
}
</script>
var映射;
函数init(){
var bounds=新的OpenLayers.bounds(
68.089442, 6.752729,
97.407576, 37.072537);
变量选项={
控件:[新建OpenLayers.Control.Navigation(),
新建OpenLayers.Control.PanZoom()
],
maxExtent:bounds,
最大分辨率:0.11843675,
投影:“EPSG:4326”,
单位:度
};
map=newOpenLayers.map(“map”,选项);
var india=新的OpenLayers.Layer.WMS(
“引用:印度国家-平铺”,
"http://localhost:8080/geoserver/cite/wms",
{图层:'cite:india_state',样式:'style',
//格式:格式,
瓦莱德:没错,
tilesOrigin:map.maxExtent.left+','+map.maxExtent.bottom
},
{缓冲区:0,displayOutsideMaxExtent:true,
isBaseLayer:是的,
yx:{'EPSG:4326':true}
}
);
var style=新的OpenLayers.style();
//用于所有多边形的规则
var rule_fsa=新的OpenLayers.rule({
符号器:{
fillColor:#FF9A“,
填充不透明度:0.5,
strokeColor:#000000“,
冲程宽度:1,
strokeDashstyle:“短跑”,
标签:“${name}”,
labelAlign:“cc”,
fontColor:#333333“,
不透明度:0.9,
方特家族:“Arial”,
尺寸:14
}
});
var rule_highlight=新的OpenLayers.rule({
过滤器:新建OpenLayers.filter.Comparison({
类型:OpenLayers.Filter.Comparison.EQUAL_TO,
属性:“分类”,
值:“1”,
}),
符号器:{
fillColor:#FF7144“,
填充不透明度:0.6,
strokeColor:#FF0000“,
冲程宽度:2,
strokeDashstyle:“实心”,
标签:“${name}”,
labelAlign:“cc”,
fontColor:#000000“,
结果:1,,
方特家族:“Arial”,
尺寸:16,
重量:“600”
}
});
style.addRules([rule_fsa,rule_highlight]);
var polygon=new OpenLayers.Layer.Vector(“多边形”{
风格:“风格”,
渲染器选项:{zIndexing:true}
});
添加图层([印度,多边形]);
zoomToMaxExtent();
}
向量层可以有一个相关的样式图
,它可以确定您的特征在不同意图下的显示方式:默认stlye、选择特征时、编辑时等
请看下面的示例:参见第7章使用StyleMap和render intents代码。
该代码创建了一个空向量层,您可以在其中添加特征并重新定义默认值和选择意图
我还向您推荐OpenLayers烹饪书
干杯