React-Leaflet - дождаться окончания загрузки WMSLayer для перерисовки - PullRequest
0 голосов
/ 18 января 2019

У меня есть 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 имя реквизита может показаться странным)

...