rlayers
Version:
React Components for OpenLayers
42 lines • 1.82 kB
JavaScript
import React from 'react';
import { RContext } from '../context';
import { default as RLayer } from './RLayer';
import { default as RFeature } from '../RFeature';
import { default as RStyle } from '../style/RStyle';
import { RlayersBase } from '../REvent';
export const featureHandlersSymbol = '_rlayers_feature_handlers';
/**
* An abstract class used for grouping code common to all Vector layers
*
* Meant to be extended
*/
export default class RLayerBaseVector extends RLayer {
constructor(props, context) {
super(props, context);
RFeature.initEventRelay(this.context.map);
this.eventSources = this.createSource(props);
super.refresh();
}
createSource(props) {
throw new Error('RLayerBaseVector is an abstract class');
}
refresh(prevProps) {
super.refresh(prevProps);
if ((prevProps === null || prevProps === void 0 ? void 0 : prevProps.style) !== this.props.style)
this.ol.setStyle(RStyle.getStyle(this.props.style));
}
incrementHandlers(ev) {
var _a;
const featureHandlers = RlayersBase.getOLObject(featureHandlersSymbol, this.ol);
featureHandlers[ev] = ((_a = featureHandlers[ev]) !== null && _a !== void 0 ? _a : 0) + 1;
}
decrementHandlers(ev) {
const featureHandlers = RlayersBase.getOLObject(featureHandlersSymbol, this.ol);
featureHandlers[ev]--;
}
render() {
return (React.createElement("div", { className: '_rlayers_RLayerVector' },
React.createElement(RContext.Provider, { value: Object.assign(Object.assign({}, this.context), { layer: this.ol, source: this.source, vectorlayer: this.ol, vectorsource: this.source, rLayer: this, rLayerVector: this }) }, this.props.children)));
}
}
//# sourceMappingURL=RLayerBaseVector.js.map