НАПИСАНИЕ И ПОДКЛЮЧЕНИЕ ПЛАГИНОВ
Клиентская часть 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, то плагин будет загружен для всех карт (для нашего примера во всех картах поменяется подложка по-умолчанию). Если опция включена, то плагин добавляется к нужным картам вручную при помощи интерфейса пользователя.