Assert each layer is only added to the map once
This commit is contained in:
@@ -9,6 +9,7 @@ import LayerProperty from './Property.js';
|
||||
import {assign} from '../obj.js';
|
||||
import RenderEventType from '../render/EventType.js';
|
||||
import SourceState from '../source/State.js';
|
||||
import {assert} from '../asserts.js';
|
||||
|
||||
/**
|
||||
* @typedef {function(import("../PluggableMap.js").FrameState):HTMLElement} RenderFunction
|
||||
@@ -243,7 +244,13 @@ class Layer extends BaseLayer {
|
||||
if (map) {
|
||||
this.mapPrecomposeKey_ = listen(map, RenderEventType.PRECOMPOSE, function(evt) {
|
||||
const renderEvent = /** @type {import("../render/Event.js").default} */ (evt);
|
||||
renderEvent.frameState.layerStatesArray.push(this.getLayerState(false));
|
||||
const layerStatesArray = renderEvent.frameState.layerStatesArray;
|
||||
const layerState = this.getLayerState(false);
|
||||
// A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both.
|
||||
assert(!layerStatesArray.some(function(arrayLayerState) {
|
||||
return arrayLayerState.layer === layerState.layer;
|
||||
}), 67);
|
||||
layerStatesArray.push(layerState);
|
||||
}, this);
|
||||
this.mapRenderKey_ = listen(this, EventType.CHANGE, map.render, map);
|
||||
this.changed();
|
||||
|
||||
Reference in New Issue
Block a user