/** * @typedef {import('./ref-manager.js').RefManager} RefManager */ /** * Контроль за одним интерактивным целевым слоем. * * @class SingleLayerManager * @property {ol.layer.Vector} layer - тот самый single слой */ class SingleLayerManager { /** * @param {ol.layer.Vector } layer - ol-слой */ constructor (layer) { recovery(self => { /** Инъекция слоя */ if(layer instanceof ol.layer.Vector || layer instanceof ol.layer.VectorImage) self.layer = layer else throw new Error("Несоответствующий тип у слоя-аргумента") }, (...e) => { console.log("Ошибка инициализии SingleLayerManager"); e.forEach(er => {throw er}); })(this) } /** * Меняет источник целевого слоя. * @method * @param {object} json - необработанный json */ set = recovery( json => { const features = new ol.format.GeoJSON().readFeatures(json, { featureProjection: 'EPSG:3857' }) this.layer.getSource().clear() this.layer.getSource().addFeatures(features) }, (...e) => { console.log("Ошибка изменения слоя (singleLayerManager.set)"); e.forEach(er => {throw er}); } ) /** * Очистка и удаление самого менеджера * @method */ exit = recovery( () => { this.layer = null }, (...e) => { console.log("Ошибка изменения слоя (singleLayerManager.set)"); e.forEach(er => {throw er}); } ) }