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

时间:2015-08-03 17:40:12

标签: openlayers-3

我正在尝试在“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.Polygon,我刚从一个范围建立。我不想使用这种方法,因为可以接收多边形的范围,并为多边形的每个点设置动画...

1 个答案:

答案 0 :(得分:1)

最后,在分析了OL3中drawPolygonGeometry在源代码中的工作方式之后,我意识到我需要在之前使用此方法应用样式:

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

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