skip to Main Content

НАПИСАНИЕ И ПОДКЛЮЧЕНИЕ ПЛАГИНОВ

Клиентская часть Geomixer позволяет писать и подключать к себе плагины. Внутри плагина доступны все функции GeoMixer API и ряд интерфейсов GeoMixer Viewer.

Плагины Geomixer представляют из себя js файл (возможно, с дополнительными зависимостями), реализующий интерфейс плагина и подключаемый при запуске системы через загрузчик модулей.

Модули Geomixer

Модули Geomixer – достаточно низкоуровневый механизм подключения именованных объектов (модулей) из внешних js файлов. Каждый модуль имеет имя и тело модуля. Дополнительно можно указать зависимости, список css файлов и функцию для инициализации.

Загрузчик модулей позволяет работать с модулями. Доступен через глобальную переменную gmxCore. Полная документация gmxCore.

Пример добавление модуля:


gmxCore.addModule('testModule', 
        { //Тело модуля 
          test1: function(){}, 
          test2: function(){} 
        }, 
          css: 'testModule.css' //css для модуля
)

Пример использования модуля:


//загрузить модуль testModule из файла testModule.js
gmxCore.loadModule('testModule', 'testModule.js', function(testModule){
    testModule.test1();
    testModule.test2();})

Интерфейс плагинов

Плагины являются модулями, которые предоставляют интерфейс IGeomixerPlugin. Интерфейс представляет из себя три ф-ции для инициализации плагина (beforeMap(), beforeViewer() и afterViewer()), которые вызываются в разные моменты времени инициализации Geomixer, а так же переменную pluginName- имя плагина. Стоит заметить, что в одном модуле может содержаться только один плагин. Полная документация IGeomixerPlugin

Подключение плагина

Для подключения плагина необходимо в конфигурационном файле Geomixer (config.js) добавить в глобальный массив gmxPlugins информацию об этом плагине. Информация представляет из себя объект со следующими свойствами:

  • module – основной модуль плагина
  • file – откуда брать модуль, если он ещё не загружен
  • params – параметры плагина. Будут переданы в ф-ции инициализации плагина
  • mapPlugin – будет ли плагин подключаться ко всем картам Geomixer (mapPlugin=false) или только к некоторым (mapPlugin=true)
  • isPublic – стоит ли показывать имя плагина в списке плагинов карты (для некоторых плагинов хочется иметь возможность подключать их к картам, но не показывать всем пользователям)

Пример (файл config.js):


gmxPlugins.push({ 
           module: 'testPlugin', //подключаем плагин из модуля testPlugin 
           file: 'testModule.js', 
           mapPlugin: true, //будем подключать только к некоторым картам 
           isPublic: true //показывать всем пользователям
})

Подключение плагина шаг за шагом – пример

Покажем на простом примере создание плагина с нуля. Плагин будет называться «TestPlugin» и будет при загрузке просто переключать подложку на «Гибрид» вместо стандартной «Карты».

Создайте отдельный js-файл, например, TestPlugin.js в папке api/plugins. В файле нужно определить модуль и реализацию интерфейса IGeomixerPlugin:


gmxCore.addModule('TestPlugin', //Определяем модуль с названием TestPlugin
{ 
        pluginName: 'Test Plugin', //так этот плагин будет отображаться в списке плагинов карты 
        afterViewer: function(params, map) //будет вызвана после полной инициализации Geomixer 
        { 
          map.setBaseLayer('Гибрид'); //используем GoeMixer API чтобы поменять видимую подложку карты 
         }
})

Далее нужно подключить этот плагин к Geomixer. Открываем файл api/config.js и добавляем описание плагина к глобальному массиву gmxPlugins (если её нет, то создаём его).


window.gmxPlugins = window.gmxPlugins || []; //Если нет переменной, то пусть будет пустым массивом
window.gmxPlugins.push({
    module: 'TestPlugin',  //подключаем плагин из модуля TestPlugin
    file: 'plugins/TestPlugin.js',
    mapPlugin: true,       //будем подключать только к некоторым картам
    isPublic: true         //показывать в списке плагинов всем пользователям
}}

Если при добавлении плагина к Geomixer не установлена опция mapPlugin, то плагин будет загружен для всех карт (для нашего примера во всех картах поменяется подложка по-умолчанию). Если опция включена, то плагин добавляется к нужным картам вручную при помощи интерфейса пользователя.

Back To Top