Справочник JavaScript API
Leaflet-GeoMixer – плагин для интеграции данных с серверов GeoMixer в любую карту, созданную с использованием библиотеки Leaflet.
Плагин добавляет несколько новых классов для работы с данными и функции для создания экземпляра этих классов.
Исходные тексты плагина и багтрекер доступны в репозитории Github.
Cодержание
- Простой пример
- Добавление плагина
- Структуры данных в GeoMixer
- Загрузка слоёв
- Класс L.gmx.VectorLayer
- Класс L.gmx.RasterLayer
- Класс L.gmx.Map
Простой пример
Добавление плагина
Чтобы добавить плагин, просто загрузите JS файл на вашей странице:
<script src="/leaflet-geomixer.js?key=GeoMixerAPIKey"></script>
GeoMixerAPIKey – это специальный ключ, который должен быть получен для каждого домена, на котором загружаются данные из GeoMixer’а.
Этот ключ может быть указан как параметр к подключаемому скрипту или передан как параметр при загрузке слоёв.
Структуры данных в GeoMixer
Основной сущностью в GeoMixer является слой. Каждый слой имеет ряд свойств, включающих в себя ID, type и title.
ID слоя уникально в пределах одного сервера. Основными типами слоёв являются векторные и растровые.
Каждый векторный слой состоит из геометрических объектов. Объекты имеют следующие атрибуты: type, geometry и properties.
Слои в GeoMixer-е объединяются в карты.
Загрузка слоёв
Слои загружаются при помощи фабричных методов в асинхронном режиме. Для удобной работы с асинхронными операциями в плагине активно используются промисы (Promises).
Есть несколько способов загрузить слой.
L.gmx.loadLayer
L.gmx.loadLayer(mapID, layerID, options): Promise
mapID – ID карты GeoMixer-а, а layerID – ID слоя в этой карте.
options – хеш дополнительных параметров со следующими возможными ключами.
Параметр |
Описание |
Тип |
Значение по умолчанию |
hostName | Хост сервера GeoMixer (без http:// и / в конце) | String | maps.kosmosnimki.ru |
apiKey | Ключ для загрузки данных. Также может быть задан один раз при подключении скрипта плагина (см. выше). Для работы с localhost ключ не требуется. | String | |
beginDate | Начальная дата временного интервала (только для мультивременных слоёв) | Date | |
endDate | Конечная дата временного интервала (только для мультивременных слоёв) | Date |
Функция возвращает Promise, который будет выполнен с экземпляром слоя (L.gmx.VectorLayer или L.gmx.RasterLayer) в качестве первого параметра. Этот экземпляр может быть использован для добавления слоя на карту, настройки отображения и т.п.
Пример
L.gmx.loadLayer('7VKHM', '295894E2A2F742109AB112DBFEAEFF09').then(function(satelliteLayer) { //...});
L.gmx.loadLayers
L.gmx.loadLayers(layers, commonOptions): Promise
Вспомогательная функция для загрузки сразу нескольких слоёв. layers – массив объектов со следующими свойствами:
- mapID – ID карты
- layerID – ID слоя
- options – дополнительные опции слоя
Каждый элемент массива соответствует отдельному вызову L.gmx.loadLayer. commonOptions применяются ко всем слоям.
Возвращает Promise, который будет выполнен (fulfill) после загрузки всех слоёв. Слои передаются как отдельные параметры.
L.gmx.loadMap
L.gmx.loadMap(mapID, options): Promise
Загружает все слои из определённой карты GeoMixer-а.
options – набор дополнительных параметров
Параметр |
Описание |
Тип |
leafletMap | Карта Leaflet для добавления к ней всех слоёв, включённых в исходной карте GeoMixer-а | L.Map |
Функция возвращает Promise, который выполняется (fulfilled) при загрузке всех слоёв. При этом в ф-ции выполнения передаётся объект типаL.gmx.Map.
Класс L.gmx.VectorLayer
Класс gmxVectorLayer предоставляет интерфейс для рендеринга векторных слоёв GeoMixer-а на карте Leaflet.
Слои могут быть добавлены к карте стандартным способом при помощи ф-ций L.Map.addLayer() или L.gmx.VectorLayer.addTo().
Методы
Метод |
Синтаксис |
Возвращаемое значение |
Описание |
setFilter | setFilter(function(item): Boolean) | this | Установить ф-цию для фильтрации объектов перед рендерингом. Единственный аргумент – ф-ция, которая получает объект из слоя и возвращает булево значение (false – отфильтровать) |
removeFilter | removeFilter() | Удалить ф-цию фильтрации объектов перед рендерингом. | |
setDateInterval | setDateInterval(beginDate, endDate) | this | Задаёт временной интервал для мультиврменных слоёв. Только объекты из этого интервала будут загружены и показаны на карте. beginDate иendDateимеют тип Date. |
addTo | addTo(map) | this | Добавить слой на карту. Аргумент map имеет типL.Map. |
bindPopup | bindPopup(html |
this | Показывает баллун по клику на объекте слоя. |
repaint | repaint() | Перерисовать слой. В отличае отL.TileLayer.redraw(), не пересоздаёт тайлы слоя, а лишь перерисовывает их. Работает быстрее и без моргания слоя на экране. | |
setImageProcessingHook | setImageProcessingHook( function(image, options): Canvas|Deferred) | Установка функции предобработки растров объектов слоя. Единственный аргумент – ф-ция, которая принимает растр объекта (image) и описание этого растра (). Возвращает: Canvas – объект замещающий исходный растр, null – не показывать растр. Может возвращать Deferredпри асинхронном режиме. | |
removeImageProcessingHook | removeImageProcessingHook() | Удалить функцию предобработки растров объектов слоя. | |
addObserver | addObserver(Observer options) | Добавление функции отбора объектов слоя по заданным условиям. |
Observer options
Параметр |
Тип |
Значение по умолчанию |
Описание |
type | update | Тип обсервера. Возможные значения (update – передача изменений, resend – передача всех объектов) | |
bbox | Весь мир | Прямоугольник отслеживания объектов | |
dateInterval | null | Временной интервал. (Для не мультивременных слоев null). | |
filters | [] | Массив идентификаторов фильтров применяемых в обсервере (на данный момент толькоuserFilterпредварительно воспользовавшись методом слоя setFilter). | |
callback | Func(Observer data) | Производится отбор объектов по заданным условиям: bbox, dateInterval и filters. |
Observer data
Параметр |
Тип |
Значение по умолчанию |
Описание |
count | 0 | Количество объектов отобранных по условиям отбора объектов указанным в обсервере. | |
added | [] | Массив объектов (при type=»update» только объекты ранее не удовлетворявшие условиям отбора). | |
removed | null | Массив идентификаторов удаляемых объектов т.е. переставших удовлетворять условиям отбора(при type=»resend» атрибут отсутствует). |
Класс L.gmx.RasterLayer
Класс L.gmx.RasterLayer рисует на карте растровые слои из GeoMixer-а.
Method |
Syntax |
Return type |
Description |
addTo | addTo(map) | this | Добавить слой на карту. Аргумент map имеет тип L.Map. |
Класс L.gmx.Map
Класс L.gmx.Map используется для работы с картой (как с набором слоёв). Он включает ряд свойств для итерирования и поиска слоёв из карты.
Свойства
Свойство |
Тип |
Описание |
layers | L.gmx.VectorLayer[] или L.gmx.RasterLayer[] | Массив всех слоёв из карты GeoMixer-а |
layersByID | Object | Хеш слоёв с ID слоя в качестве ключа хеша |
layersByTitle | Object | Хеш слоёв с заголовком (title) слоя в качестве ключа хеша |