reactjs - React-Leaflet - 等待 WMSLayer 完成加载以重绘
问题描述
我有一个 WMSLayer,它接受一串以逗号分隔的图层名称来调用获取图块。
import React, { Component } from "react";
import { WMSTileLayer } from "react-leaflet";
class WMSLayers extends Component {
render = () => (
<WMSTileLayer
format="image/png"
layers={this.props.layers}
url="https://ws.topogrids.de/geoserver/ows"
/>
);
}
该组件在layers
prop 更改时开始网络请求。这意味着一旦layers
传递了一个新的道具,当前的 WMSLayer 就会被擦除,并在收到新的瓷砖时开始绘制它们。这当然是完全有道理的。
我想做的是以某种方式保留旧组件,直到获取新图块,然后一次渲染所有新图块。这样,如果我只是再打开一层,当前层就不会消失。
我意识到我可以通过为每个图层创建一个单独的 WMSTileLayer 来实现这一点,但是如果打开多个图层,这会导致每次缩放/平移都会调用许多 API。
该图层确实提供了一个onLoad
事件,该事件在瓷砖完成加载时被触发,但我不知道如何在完成之前保持旧图层的绘制,如果它甚至可能的话。
建议将不胜感激!
此外,这不是在 Leaflet 中重绘图层时如何保留旧瓷砖直到加载每个新瓷砖?- 这个问题是关于在一张地图上使用多个图层,但这个问题是关于在一张地图上使用一层(我意识到 WMSTileLayerlayers
道具名称可能会让这看起来很混乱)
解决方案
推荐阅读
- java - 默认接口方法的辅助函数
- c# - 如何在 Json 中获取计数返回匿名对象
- spotify - Spotify API:如何仅为我自己获取访问令牌
- angular - 未捕获的 ReferenceError:在初始化之前无法访问“RSI_RESULT”
- css - 我在尝试对齐这些图像时 flexbox 做错了什么?
- quarkus - Quarkus 构建异常
- javascript - 在网格动画中添加动画线
- reporting-services - SSRS 多值参数
- sql-server - 如何从 excel 文件中为子类型集群表导入数据
- javascript - 如何使用 react js 发布 JSON 数据?