在带有 vectorContext 的 postCompose 事件上使用 'drawPolygonGeometry()'

Use of 'drawPolygonGeometry()' on postCompose event with vectorContext

我正在尝试在 'postcompose' 调用的事件中围绕每种几何形状(可以是每种 ol.geom 类型:点、多边形等)绘制圆。这样做的目的是在选择某个功能时创建动画。

listenerKeys.push(map.on('postcompose',
    goog.bind(this.draw_, this, data)));

 this.draw_ = function(data, postComposeRender){
   var extent = feature.getGeometry().getExtent();
   var flashGeom = new ol.geom.Polygon.fromExtent(extent);
   var vectorContext = postComposeRender.vectorContext;

   ...//ANIMATION CODE TO GET THE RADIUS WITH THE ELAPSED TIME

   var imageStyle = this.getStyleSquare_(radius, opacity);
   vectorContext.setImageStyle(imageStyle);
   vectorContext.drawPolygonGeometry(flashGeom, null);
 }

方法

drawPolygonGeometry( {ol.geom.Polygon} , {ol.feature} )

无效。但是,当我使用

方法时它起作用了

drawPointGeometry({ol.geom.Point}, {ol.feature} )

即使flashGeom的类型是 ol.geom.我刚刚从一定范围内构建的多边形。我不想使用此方法,因为可以接收多边形的范围,并且它为多边形的每个点设置动画...

最后在源码中分析了OL3中drawPolygonGeometry的工作方式,才发现原来需要用这个方法来应用样式:

vectorContext.setFillStrokeStyle(imageStyle.getFill(), 
  imageStyle.getStroke());

DrawPointGeometry 和 drawPolygonGeometry 没有使用相同的样式实例。