经纬志
首页 / OpenLayers / 使用示例

逐帧动画图标

用 canvas 生成 8 帧光点图标,定时替换要素样式形成循环动画,图标保持屏幕像素尺寸,缩放地图不影响节奏。

OpenLayers 10.3.1 · 对应官方 animated-gif.html · 更新 2026-10-27
源码与运行效果
运行效果

说明

官方示例把一张 GIF 交给 ol.style.Icon,帧动画由浏览器播放,OpenLayers 只负责把当前帧绘到地图上。为了让示例不依赖外部图片,这里用 canvas 逐帧画出光圈扩散效果, 再取 toDataURL() 生成 8 个图标。

逐帧样式在初始化时缓存成 ol.style.Style 数组,切换时只调用 feature.setStyle(),避免每一帧都新建样式对象。图标默认以屏幕像素为单位, 缩放地图不会改变它的大小。

操作结果
勾选「播放动画」图标按 120 ms 的间隔循环切换
取消勾选停在当前帧,状态栏保留帧号
缩放地图图标尺寸不变,动画节奏不受影响