【发布时间】:2026-02-03 23:25:01
【问题描述】:
我正在使用 Leaflet WMS 切片图层来加载雷达并将其显示在地图上。我有一个循环播放时间序列的播放按钮,每个循环都请求新的瓷砖。一切正常,除了闪烁的问题。这些请求之间有一个轻弹。
我加载层一次,然后使用 setParams 更改参数以获取新请求:
this.layer.setParams({
time: this.currentTime.toISOString().split(".")[0] + "Z"
});
这就是我加载图层的方式:
this.layer = L.tileLayer.wms("http://geo.weather.gc.ca/geomet/?", {
layers: "RADAR_1KM_RRAI",
format: "image/png",
transparent: true,
opacity: 0.5,
zIndex: 2
});
Stackblitz:https://stackblitz.com/edit/mn-angular-leaflet-wms
文档:https://leafletjs.com/reference-1.6.0.html#tilelayer-wms
有一个用于传单https://github.com/heigeo/leaflet.wms 的插件,但我不确定这是否能解决问题。我试图实现它,但不能很好地理解它。
【问题讨论】:
-
您的 stackblitz 示例似乎由于跨域问题而无法显示切片图层?但总的来说,您是否尝试过预加载/创建您需要的图层,以防止闪现?
-
@chrismarx 你能刷新几次吗?它大部分时间加载,但有时不加载。我尝试预加载图层并将其存储在数组中,然后添加删除图层,但我仍然遇到同样的问题。
-
啊,我现在确实看到了图层。当您预加载图层时,您是否在删除当前图层之前在现有图层下方添加了下一个图层?
-
@chrismarx 删除了当前的,因为它没有给出预期的结果。如果是预加载的问题,我刚刚再次测试。我运行这出戏并将其放置几个周期。网络停止请求图层,因为已经缓存但仍在闪烁。
-
@chrismarx 我再次处理了您的建议(预加载图层),并通过几个在线示例最终得到了解决方案。谢谢
标签: javascript angular leaflet