ano-mr-site/lib/js/single-layer-manager.js

61 lines
1.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @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});
}
)
}