Source: layers/abstract.js

/**
 * Класс AbstractLayer - класс, описывающий основные методы и свойства классов слоев, наследуюемых от него
 */
class AbstractLayer {
   /**
    * Создает экземпляр абстрактного слоя
    */
   constructor(params) {
      this.initStore(params);
   }

   /**
    * Инициилаизация внутренного хранилища
    */
   initStore(params) {
      this.store = {};
      this.layer = {};
      this.events = {};
   }

   /**
    * Идкетификация объектов слоя, находящихся в точке
    * @param params
    * @return {Array}
    */
   identify(params) {
      return [];
   }

   /**
    * Запрос к объектам слоя
    * @param params
    * @return {Array}
    */
   query(params) {
      return [];
   }

   /**
    * Поиск объектов слоя по текстовой строке
    * @param {object} params
    * @return {Array}
    */
   search(params) {
      return [];
   }

   /**
    * Присвоение объекта родительской карты
    * @param map
    */
   setMap(map) {
      this.map = map;
   }

   /**
    * Получение родительской карты
    * @return {*}
    */
   getMap() {
      return this.map;
   }

   /**
    * Установление видимости слоя
    * @param {boolean} value - Возможные значения - true, false
    * @param afterTimeValue
    */
   setVisibility(value, afterTimeValue) {
      let timeValue = afterTimeValue === undefined ? Math.round(Math.random() * 100 + 50) : afterTimeValue;
      let timeoutIndex = setTimeout(() => {
         this.layer.setVisible(value);
         clearTimeout(timeoutIndex);
      }, timeValue);

   }

   setOptions(){

   }

   /**
    * Получение текущей видимости слоя
    */
   getVisibility() {
   }

   /**
    * Назначение рендерера (функции стиля объектов)
    * @param renderer
    */
   setStyle(renderer) {
   }

   /**
    * Получение рендерера (функции стиля)
    */
   getStyle() {
   }

   /**
    * Получение текущего состояния слоя
    */
   getState() {

   }

   /**
    * Привязка событий и вызов обратной функции
    * @param eventName
    * @param func
    */
   on(eventName, func) {

   }

   /**
    * Отвязка события от объекта
    * @param eventName
    */
   off(eventName) {

   }

   emit(eventName) {

   }
}

module.exports = AbstractLayer;