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

视频叠加

把视频画面钉在地图范围上播放,可调透明度、暂停,并在老浏览器上自动降级。

Leaflet 1.9.4 · 更新 2026-10-28
源码与运行效果
运行效果

说明

示例没有外链视频文件,直接用 canvas.captureStream(25) 合成一路实时流, 把 HTMLVideoElement 交给 L.videoOverlay。 这既避免了跨域与编码格式问题,也演示了「视频节点可以直接传入」这条路径。 真实项目里把 video.srcObject 换成 video.src = '/media/flow.mp4' 即可。

覆盖范围经度 0.32°、纬度 0.16°,与 640×320 的画布保持 2:1,视频不会被拉伸变形。 透明度通过 setOpacity 实时修改,暂停时同时停掉绘制循环,避免后台空转。

环节本例做法换成自有视频时
片源canvas 流,无外部文件mp4 + webm 双格式数组,兼容旧版 Safari
自动播放muted + playsinline保持静音;需要声音时改为用户点击后播放
比例bounds 与画布比例一致按视频宽高比换算经纬跨度,避免人物或车辆变形
控制getElement() 调 play / pause可接自定义控件做进度条与倍速
降级不支持 captureStream 时改建 imageOverlay视频解码失败时监听 error 换成静态快照

视频叠加层在移动端会持续解码,电量和发热明显高于静态图。监控类页面通常只在 用户点开时才挂载视频,关闭时调用 remove() 并把 video.src 置空,让解码器释放。