openlayers 使用地图postcompose事件event.vectorContext 为什么获取不到呢?
通过openlayers添加点然后实现点位闪烁效果
flash(feature) { var _this = this; var start = new Date().getTime(); var listenerKey; function animate(event) { debugger; var duration = 1000; var vectorContext = event.vectorContext; var frameState = event.frameState; var flashGeom = feature.getGeometry().clone(); var elapsed = frameState.time - start; var elapsedRatio = elapsed / duration; // var radius = ol.easing.easeOut(elapsedRatio) * 6 + 5; // var opacity = ol.easing.easeOut(1 - elapsedRatio); var radius = 10; var opacity = 1; console.log("radius:::" + radius + ":::opacity:::" + opacity) var style = new Style({ image: new Circle({ radius: radius, snapToPixel: false, stroke: new Stroke({ color: 'rgba(255, 0, 0, ' + opacity + ')', width: 0.25 + opacity }) }) }); vectorContext.setStyle(style); vectorContext.drawGeometry(flashGeom); if (elapsed > duration) { ol.Observable.unByKey(listenerKey); return; } _this.map.render(); } listenerKey = _this.map.on('postcompose', animate);}
OpenLayers 的 postcompose
事件在渲染地图的每个帧时被触发,但是它并不总是包含 vectorContext
。这是因为 postcompose
事件的目标是允许你在地图渲染之后执行自定义的渲染代码,但它不保证 vectorContext
一定存在。
在你的代码中,如果 event.vectorContext
获取失败,可能的原因是在某些情况下,postcompose
事件可能没有包含 vectorContext
。这可能是由于地图的渲染流程或者其他一些因素导致的。
为了解决这个问题,你可以尝试以下步骤:
postcompose
事件不能满足你的需求,你可以考虑使用其他事件,如 render
事件。render
事件通常在地图渲染时触发,并且可能包含你需要的 vectorContext
。event.vectorContext
不可用,你也可以尝试从地图中获取特定的 VectorLayer,并直接在该层上设置样式和绘制几何图形。requestAnimationFrame
或其他技术来同步你的动画。针对你提供的代码,可以尝试将动画逻辑与特定的 VectorLayer 相关联,而不是依赖于 event.vectorContext
。这样可以更好地控制动画的执行,并确保它在正确的上下文中执行。
如果上述步骤仍然不能解决问题,你可能需要查阅 OpenLayers 的官方文档或社区论坛,以获取更具体的帮助和示例代码。
本文向大家介绍完美解决Jpush[获取sdk版本失败!]的问题,包括了完美解决Jpush[获取sdk版本失败!]的问题的使用技巧和注意事项,需要的朋友参考一下 错误日志如下: 5-31 12:47:40.088 23896-23896/? E/JIGUANG-JCore: [JCoreGlobal] Get sdk version fail![获取sdk版本失败!] 05-31 12:47:40.
我得到这个问题与flutter pub get,试图更新dart sdk,重新启动pc添加dart sdk位置回到环境变量,删除。git文件夹。 在计算器中运行“flutter pub get”... 当前Dart SDK版本为2.13.4。 颤医生: 飞镖版:
本文向大家介绍详解pandas赋值失败问题解决,包括了详解pandas赋值失败问题解决的使用技巧和注意事项,需要的朋友参考一下 一、pandas对整列赋值 这个比较正常,一般直接赋值就可以: 二、pandas对非整列赋值 1、用单个值赋值 是不是很奇怪,没有赋值成功!! 2、用多个值赋值 报错了!!提示说,要用.loc赋值,那我们试一下。 3、.loc赋值 报错,这是因为shape原因。 三、用数
本文向大家介绍解决PyCharm import torch包失败的问题,包括了解决PyCharm import torch包失败的问题的使用技巧和注意事项,需要的朋友参考一下 Anaconda3-5.1.0-MacOSX-x86_64.pkg 下载安装后,附带安装了pytorch包。 需要将环境调整到新的python3.6目录下。 1、在Project Interpreter选择“Show All
同一个接口,其他项目访问的时候可以正常获取到数据,但是我的项目访问该接口状态码正常是200,但是所有接口的返回数据都是{"name":"ERROR_DATA","message":"获取数据失败"}。 首先状态码是200,那么也就意味着没有跨域问题,请求也成功了,但是却一直都是获取数据失败,还有什么原因会导致这样的问题?我把别的项目也在本地运行了,访问同一个接口时没问题的,在我本地环境也可以正确获
我回到我的android项目来完成它,突然我得到这个错误信息说 “无法解析受Androidx影响的模块: "错误:无法解决:androidx。受影响的模块:应用程序" 这是我的身材。渐变文件