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  阅读(2102)  评论(0编辑  收藏  举报

导航