У меня есть 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
. Это означает, что как только новая пропущенная layers
пропадает, текущий WMSLayer стирается, и новые плитки начинают рисовать по мере их получения. Это, конечно, имеет смысл.
Что я хотел бы сделать, так это как-то сохранить старый компонент до тех пор, пока не будут извлечены новые плитки, а затем отобразить новые плитки сразу. Таким образом, если я просто включу еще один слой, текущие слои не исчезнут.
Я понимаю, что могу добиться этого, создав отдельный WMSTileLayer для каждого слоя, но это приводит ко многим вызовам API на масштабирование / панорамирование, если включено несколько слоев.
Слой действительно обеспечивает событие onLoad
, которое запускается, когда плитки завершают загрузку, но я не знаю, как сохранить старые слои нарисованными, пока это не будет сделано, если это вообще возможно.
Совет будет принята с благодарностью!
Кроме того, это не дубликат Как сохранить старые плитки до тех пор, пока каждая новая плитка не будет загружена при перерисовке слоя в Leaflet? - этот вопрос касается использования нескольких слоев с одной картой, но этот вопрос речь идет об использовании одного слоя с картой (я понимаю, что WMSTileLayer layers
имя реквизита может показаться странным)