mobility-toolbox-js
Version:
Toolbox for JavaScript applications in the domains of mobility and logistics.
49 lines (48 loc) • 1.56 kB
JavaScript
import debounce from 'lodash.debounce';
import OLLayer from 'ol/layer/Layer';
import { unByKey } from 'ol/Observable';
import LayerRenderer from 'ol/renderer/Layer';
import defineDeprecatedProperties from '../utils/defineDeprecatedProperties';
let deprecated = () => { };
if (typeof window !== 'undefined' &&
new URLSearchParams(window.location.search).get('deprecated')) {
deprecated = debounce((message) => {
// eslint-disable-next-line no-console
console.warn(message);
}, 1000);
}
class EmptyLayerRenderer extends LayerRenderer {
prepareFrame() {
return true;
}
renderFrame() {
// Return an empty div as a placeholder HTMLElement
return document.createElement('div');
}
}
/**
* An OpenLayers layer here only for backward compatibility v2.
* @deprecated Use an OpenLayers Layer instead.
*/
class Layer extends OLLayer {
constructor(options = {}) {
super(options);
this.olEventsKeys = [];
defineDeprecatedProperties(this, options);
deprecated('Layer is deprecated. Use an OpenLayers Layer instead.');
// Backward compatibility
this.olEventsKeys = [];
}
clone(newOptions) {
return new Layer(Object.assign(Object.assign({}, (this.get('options') || {})), (newOptions || {})));
}
// ol does not like when it returns null.
createRenderer() {
return new EmptyLayerRenderer(this);
}
detachFromMap() {
// Backward compatibility
unByKey(this.olEventsKeys);
}
}
export default Layer;