Информация о продукте

ember-flexberry-gis представляет из себя ember-аддон, который может опционально устанавливаться в любое ember-flexberry приложение, добавляя к нему возможность размещать на настраиваемой интерактивной карте, данные, имеющие географичекую привязку.

Пример готовой интерактивной карты, интегрированной в ember-flexbery приложение выглядит следующим образом:

Демонстрационное приложение, включающее в себя несколько примеров таких карт располагается по адресу flexberry.github.io/ember-flexberry-gis

Состав продукта

Основные элементы, из которых состоит аддон ember-flexberry-gis:

  • ember-flexberry-data модель для интерактивной карты (либо нескольких карт), а также модели для слоев наполняющих карту;
  • ember-flexberry-data сериалайзеры к этим моделям;
  • Базовые классы роутов и контроллеров для списковой формы и формы просмотра/редактирования интерактивной карты;
  • Форма поиска карт и слоев, которая может опционально включаться в приложение при наличии в нем большого числа карт и слоев для них;
  • ember-компоненты интерактивной карты, её слоев, а также её инструментов;

Модель интерактивной карты и её слоев

В виде UML-диаграммы модель данных интерактивной карты и её слоев выглядит следующим образом:

Карта представляет из себя класс со следующим набором полей:

Наименование поля Тип поля Описание
Name String Наименование карты
Description String Описание карты
KeyWords String Клчевые слова разделенные запятыми (используются формой поиска, при её наличии)
AnyText String Вычислимое поле, включающее наименование карты её описание и ключевые слова (используются формой поиска, при её наличии, для полнотекстового поиска)
Lat Double Широта центра карты
Lng Double Долгота центра карты
Zoom Double Значение “приближения” карты в диапазоне от 0 до 18
Public Bool Флаг: является ли карта общедуступной
Scale Int Целочисенное значение мастштаба/точности, например, если данные карты представлены в масштабе 1:10000, то значение этого поля будет 10000
CoordinateReferenceSystem String Сериализованное JSON-описание системы координат карты (по умолчанию {"code":"EPSG:3857"})
BoundingBox Geography Опциональный прямоугольник ограничивающий границы карты (используется формой поиска, при её наличии, для поиска по пересечению с заданными границами, а также одним из инструментов карты для пиближения к её границам). Тип Geography поддерживается только специализированными сервисами данных, в которых реализована поддержка географических/геометрических типов данных: для MSSQL это GisMSSQLDataService, а для PostgreSQL это GisPostgresDataService, именно один из этих сервисов данных должен быть установлен в серверной части приложения и указан в конфиграционном файле приложения в качестве основного, если в приложении планируется использовать ember-flexberry-gis

Слой карты представляет из себя класс являющийся детейлом карты, со следующим набором полей и с иерархической ссылкой на самого себя:

Наименование поля Тип поля Описание
Name String Наименование слоя
Description String Описание слоя
KeyWords String Клчевые слова разделенные запятыми (используются формой поиска, при её наличии)
AnyText String Вычислимое поле, включающее наименование слоя, его описание и ключевые слова (используются формой поиска, при её наличии, для полнотекстового поиска)
Index Int Позиция слоя в иерархии слоев карты (слои с меньшим индексом располагаются в иерархии слоев ближе к корню иерархии и “ниже”)
Visibility Bool Флаг: показывает виимость слоя на карте (true - слой видим на карте, false - невидим)
Type String Тип слоя (наименования одного из типов слоев, реализованных либо в ember-flexberry-gis, либо в аддонах дополняющих ember-flexberry-gis, либо с прикладной стороны, например group, tile, wfs, wms-wfs, wms-signle-tile, kml, geojson, osm, и .т.п.)
Settings String Сериализованное JSON-описание слоя вида {"opacity":1,"bounds":[[-90,-180],[90,180]],"wgs84bbox":[[],[]],"bbox":[[],[]],"displaySettings":{"dateFormat":"DD.MM.YYYY","featuresPropertiesSettings":{"displayPropertyIsCallback":false,"displayProperty":null,"excludedProperties":[],"localizedProperties":{"ru":{},"en":{}}}},"url":"http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}, здесь настройки opacity, bounds, wgs84bbox, bbox, displaySettings, являются общими для большинства типов слоев, остальные же настройки варьируются в зависимости от используемого типа слоя, здесь приведен пример настроек для слоя типа tile, и единственной специфичной для него настройкой явяется "url":"http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", у слоев других типов таких настроек может быть больше
Scale Int Целочисенное значение мастштаба/точности, например, если данные слоя представлены в масштабе 1:10000, то значение этого поля будет 10000
CoordinateReferenceSystem String Сериализованное JSON-описание системы координат слоя (например {"code":"EPSG:3857"})
BoundingBox Geography Опциональный прямоугольник ограничивающий границы слоя (используется формой поиска, при её наличии, для поиска по пересечению с заданными границами, а также одним из инструментов карты для пиближения к границам слоя). Тип Geography поддерживается только специализированными сервисами данных, в которых реализована поддержка географических/геометрических типов данных: для MSSQL это GisMSSQLDataService, а для PostgreSQL это GisPostgresDataService, именно один из этих сервисов данных должен быть установлен в серверной части приложения и указан в конфиграционном файле приложения в качестве основного, если в приложении планируется использовать ember-flexberry-gis

Поддерживаемые типы слоев карты

JS API карты

При работе с картой иногда возникает необходимость управлять отдельными её функциями из разных модулей самой карты, а иногда и из внешних приложений, в которые она встраивается, и для этого у карты имеется JS API.