OpenLayers:图层和要素的样式设置,以及设置失效的一种错误原因
1.图层统一样式设置
OpenLayer可以对整个图层(Layer)的所有要素设置样式: myLayer.setStyle(myStyle);
2.单个要素样式设置
也可以对单个要素(Feature)设置样式 myFeature.setStyle(myStyle);
3.一种要素高亮显示的方案和可能产生的问题
方案
- 新建一个高亮图层(Layer),为该图层设置高亮样式
- 获取到需要高亮显示的要素
- 将要素添加到图层中
- 不需要高亮时,将图层清空,或者将某要素移出高亮图层
可能产生的问题:要素颜色加深,但并没有呈现出高亮的样式,仅仅是透明度降低而已
问题原因:
再回顾一下步骤: 从普通图层中获取需要高亮的要素,将要素添加到高亮图层。
显而易见,普通图层中的要素和高亮图层中的要素,指向同一个地址,也就是说,他们是同一个要素对象。
所以为整个高亮图层设置的样式,是没有生效的,因为要素已经有一个它自己的私有样式了。
颜色加深,是因为普通图层和高亮图层的的要素,在地图上叠加在一起。
解决办法:
这并不是一个陌生的问题,实现要素的深拷贝就好了。
最基础的要素深拷贝就是: 新建一个要素,为新要素设置Geometry.
function copyFeature(feature) {
var newFeature = new Feature({
geometry: feature.getGeometry(),
});
return newFeature ;
}
posted on 2022-06-28 16:09 northwest 阅读(2304) 评论(0) 编辑 收藏 举报