Я строю карту внутри constructor
моего класса, что-то вроде этого:
constructor(props) {
super(props);
this.mapDivId = `map-${Math.random()}`;
const baseLayer = new OlLayerTile({
name: 'OSM',
source: new OlSourceOSM()
})
this.map = new OlMap({
//Assign Layers
layers: [
baseLayer,
],
view: new OlView({
center: fromLonLat(VIEW_CENTER),
zoom: ZOOM,
})
});
}
Теперь все работает отлично, я могу добавить любой слой, какой захочу, когда я в конструкторе, теперь здесь это проблема, я хочу пропустить новые слои через подпорки моего класса (когда вызывается какой-то API) примерно так:
<Map layers={layers}/>
И я хочу, чтобы эти слои были назначены на карту! но независимо от того, что я делаю, я терплю неудачу, вот пару вещей, которые я попробовал:
componentDidUpdate(prevProps, prevState) {
if (!JavascriptUtils.isArrayEquel(prevState.layers, this.props.layers)) {
//solution 1:
(this.props.layers || []).forEach(layer => {
this.map.addLayer(layer)
})
//solution 2:
// this.map.layers = [
// this.state.baseLayer,
// ...(this.props.layers || [])
// ]
this.setState({ layers: this.props.layers })
}
}
Как я могу справиться с добавлением новых слоев на мою карту?, Я просто хочу, чтобы слой карты был изменяются всякий раз, когда изменяется слой реквизита