Как использовать интерактивные карты в FastReport VCL 6

16.01.2018

Интерактивные карты стали очень популярными с появлением Google Map. Такие карты позволяют перемещаться по карте, увеличивать или уменьшать масштаб и многие другие функции. С выходом FastReport VCL 6 такие карты можно внедрять в отчеты. Для этого необходимо получить карту в одном из двух доступных форматов и вставить ее в отчет с помощью объекта Map.

Вы можете использовать карты в формате .shp и .osm, а также gps треки в формате .gpx.

Формат .shp – ShapeFile. Это специальный формат хранения векторых геоинформационных данных. Был разработан американской компанией ESRI в 1990х. В настоящее время самый распространенный формат применяемый в Геоинформационных системах.

На самом деле ShapeFile это не одиночный файл. Помимо файла .shp набор включает еще .shx и .dbf.

Первый, .shp, представляет собой геометрическое описание фигур. Файл формата .shx имеет позиционный индекс для привязки фигур друг к другу. Файл .dbf содержит информацию о фигурах из файла .shp.

Так как это коммерческий продукт, некоторые карты могут быть платными.

Формат .osm – OpenStreetMap. Это формат хранения географических данных основанный на xml. Из названия понятно, что это открытый проект, который поддерживается исключительно добровольцами. Этот веб проект представляет собой глобальную карту земного шара. Волонтеры постоянно пополняют карту новыми геолокационными данными, аэрофотоснимками. Проект получил большую популярность и имеет огромное количество участников. Поэтому подробность карт находится на достаточно высоком уровне. Все карты в osm, как и в shp представлены в двумерном формате без отображения высот над уровнем моря.

Так как проект бесплатный, то и карты бесплатны.

Для начала нам потребуется карта. Объект Карта поддерживает три формата файлов: .shp, .osm, .gpx.

Первые два представляют собой векторные карты, последний – набор маршрутов и треков для карт. Вы можете загрузить карту в одном из доступных форматов, а затем, в новом слое GPS данные.

Прежде чем рассматривать объект Карта, давайте определимся где же брать эти карты. Вы можете скачать готовые карты в интернете. Множество сайтов предоставляет как платные, так и бесплатные карты в обоих форматах.

Есть еще один способ получить файл с картой. Он подходит для формата osm. Существует специальный сервис – интерактивная карта земного шара (www.openstreetmap.org). Этот сервис позволяет выбрать нужную область и экспортировать ее в файл. Однако, есть ограничение по размеру экспортируемой области. Как правило в эту область помещается один населенный пункт, либо его часть. Давайте посмотрим, как это выглядит:

 

Нажав кнопку «Экспортировать», браузер закачивает файл osm. Так, что, если вам требуется показать небольшую область на карте, этот сервис очень поможет.

Если вы хотите просто поэкспериментировать, как я, то можете взять готовые файлы PortoSantoTrack.osm и PortoSantoTrack.gpx из поставки FastReport VCL 6.

Создаем отчет. И добавляем на страницу объект Map. К слову, вы можете размещать этот объект на любом бэнде, кроме «Данные». Добавив объект, мы сразу же увидим его редактор.

Пока еще объект пуст. Мы видим только: общие настройки (general), цветовая гамма (color scale), размерная шкала (size scale).

Карта состоит из слоев. Вы можете выводить всю карту в одном слое, либо разделить ее на несколько слоев.

В случае разделения карты на несколько слоев, каждый слой настраивается отдельно - цвет, шрифт, толщина линий и прочее. С помощью разных настроек для слоев мы можем, например, окрасить реки в синий цвет, а торговые пути в красный. Объекты карты описываются тегами в XML (OSM) файле. В каждом слое мы выбираем нужные для отображения теги (объекты). Затем, в настройках слоя задаем параметры (цвет, шрифт, толщину и др.). В общем, послойное отображение карты позволяет нам настроить отображение как хочется.

В случае, когда вы выводите карту в одном слое, настройки применяются ко всем объектам карты и вы не сможете настроить отображение отдельных ее элементов.

Тут нужно сказать, что для карт в формате .shp доступно отображение только в одном слое.

Чтобы добавить карту, нажимаем кнопку Add…:

 

Появляется окно добавления слоя. Выбираем файл с картой или GPS треком. Вы можете включить файл в отчет с помощью соответствующей опции. Ниже мы видим еще два варианта добавления слоя:

  • пустой слой с данными из приложения – данные для построения карты могут быть не только в файле, но и в базе данных. Поэтому создаем пустой слой и настраиваем подключение к источнику данных;
  • пустой интерактивный слой – как я понял, это еще не реализованный функционал. Предполагается возможность создать слой вручную, с помощью примитивов.

Нажимаем кнопку OK. Если мы загружаем osm файл, то будет предложено окно выбора тэгов:

Теперь внимание! Если нажать кнопку Отмена, то автоматически будут выбраны все теги для данного слоя. Но мы идем другим путем.

С помощью кнопки со стрелками перемещаем тэги в правую часть. Если мы хотим отображать карту в нескольких слоях, то выбираем нужные для текущего слоя тэги. Например, в первый слой я перетащил все теги кроме highway и waterway

 

Внизу есть фильтр для тегов.

Нажимаем кнопку Ок и получаем почти всю карту:

В настройках слоя 1 на вкладке Appearance выставим Point Size в 0, чтобы не мешали:

Пару слов о настройках слоя. Настройки представлены на пяти вкладках:

  • Data – для варианта использования геоданных из базы;
  • Appearance – настройки внешнего вида линий;
  • Color Ranges – настройки цветовой палитры для автоматического закрашивания объектов на карте;
  • Size Ranges – настройки размерной таблицы или размерной сетки;
  • Labels – настройки меток.

Добавим еще один слой таким же способом, как и ранее. На этот раз выберем лишь тег highway. На вкладке Appearance изменим Border Color на Maroon. Теперь дороги имеют малиновый цвет.

Добавляем третий слой. В этот раз выбираем тэг waterway. Изменим в Border Color цвет для водных объектов на синий. А Border Width установим в значение 2.

В настройках Map задаем заливку. Какой-нибудь пастельный цвет.

Не хватает только названий. Выбираем первый слой. На последней вкладке Label выбираем для Вид метки (Label Kind) значение Name. И для Колонка метки (Label column) – значение name.

Карту мы добавили, давайте посмотрим теперь как будет выглядеть gps трек для этой карты. Добавляем еще один слой и выбираем файл с расширением .gpx.

На вкладке Appearance выбираем яркий цвет для Border Color:

Карта готова. Запустим отчет:

Сразу же бросается в глаза наш gsp трек ярко-розового цвета. Мы можем перемещаться по карте с помощью мыши. Можно увеличивать/уменьшать масштаб с помощью колеса прокрутки мыши. Вверху справа расположен блок фильтрации. В нем вы можете отключать слои, если они мешают. Например, отключим последний слой – трек:

Вот и все. Согласен, есть некоторая сложность с добавлением карты по слоям. Приходится вручную добавлять нужные теги в слой. Но, зато, результат гораздо лучше, чем при добавлении всех тегов в один слой.

20 ноября 2024

Локализация и смена языков в FastReport VCL

FastReport VCL поддерживает 40 языков для локализации интерфейса и позволяет изменять язык на лету через меню или код, без перекомпиляции.
1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.
30 октября 2024

Использование стилей при создании отчетов в FastReport VCL

В статье подробно рассматривается одна из новых возможностей FastReport VCL – применение стилей и страниц стилей.