Для отображения карт в экранах приложения используется компонент com.haulmont.charts.gui.components.map.MapViewer
.
Для подключения компонента в XML-дескриптор экрана в корневом элементе необходимо объявить пространство имен chart
:
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
xmlns:chart="http://schemas.haulmont.com/charts/charts.xsd"
...>
XML-имя компонента: mapViewer
. Пример объявления компонента:
link:../../../source/map/mapViewer.xml[role=include]
В XML-дескрипторе можно задать следующие параметры компонента:
-
id
,width
,height
- стандартные параметры компонентов. -
mapType
- тип карты, соответствующий перечислениюMapViewer.Type
:roadmap
,satellite
,hybrid
,terrain
. По умолчанию выбираетсяroadmap
. -
vendor
- поставщик сервиса. На данный момент поддерживается только значениеgoogle
.
Основная настройка карты и ее компонентов производится в контроллере экрана. Для этого достаточно инжектировать компонент, объявленный в XML-дескрипторе:
link:../../../source/map/MapViewer.java[role=include]
- Методы настройки карты
-
-
fitToBounds()
- задание минимального масштаба карты, при котором будет полностью отображена область, заданная северо-восточной и юго-западной координатами. -
removePolygonVertex()
- удаление вершины полигона. -
setCenter()
- задание центра карты. -
setCenterBoundLimits()
- задание возможных границ центра карты. -
setCenterBoundLimitsEnabled()
- включение режима, ограничивающего центр карты. -
setDraggable()
- включение/выключение режима перетаскивания карты. -
setKeyboardShortcutsEnabled()
- включение/выключение сочетаний клавиш. -
setMapType()
- задание типа карты. -
setMaxZoom()
- задание максимального доступного масштаба. -
setMinZoom()
- задание минимального доступного масштаба. -
setRemoveMessage()
- задание строки сообщения для удаления вершины полигона. -
setScrollWheelEnabled()
- включение/выключение изменения масштаба карты с помощью колесика мыши. -
setVertexRemovingEnabled()
- включение/выключение режима, разрешающего удаление вершин полигона. -
setVisibleAreaBoundLimits()
- задание границ видимости карты. -
setVisibleAreaBoundLimitsEnabled()
- включение режима, ограничивающего видимую область карты. -
setZoom()
- задание масштаба карты.
-
- Интерфейсы компонентов карты
-
Интерфейсы, перечисленные ниже, располагаются в пакете
com.haulmont.charts.gui.map.model
.-
Circle
- компонент для отображения круга. КомпонентCircle
имеет те же атрибуты, чтоPolygon
, а его форма определяется двумя дополнительными атрибутами:center
(GeoPoint
) иradius
. Для создания и размещения объекта на карте используются методыcreateCircle()
иaddCircle()
интерфейсаMapViewer
.link:../../../source/map/Circle.java[role=include]
-
DrawingOptions
- компонент поддержки рисования. В данный момент поддерживается только рисование полигонов. Режим рисования будет включен если вMapViewer
передан экземплярDrawingOptions
. Пример использования:link:../../../source/map/DrawingOptions.java[role=include]
-
GeoPoint
- вспомогательный компонент, непосредственно не отображаемый на карте. Используется для задания параметров карты, таких как центр, границы, и для создания более сложных компонентов карты. Для создания объекта используется методcreateGeoPoint()
интерфейсаMapViewer
. Например:link:../../../source/map/MapGeoPoint.java[role=include]
-
HeatMapLayer
- слой тепловой карты: предназначен для изображения плотности данных в различных географических точках. Степень плотности точек отображается с помощью цвета. По умолчанию области с высокой плотностью точек отображаются красным цветом, а области с низкой - зелёным. Для создания и размещения объекта на карте используются методыcreateHeatMapLayer()
иaddHeatMapLayer()
интерфейсаMapViewer
. Например:link:../../../source/map/HeatMapLayer.java[role=include]
Данные добавленного на карту слоя тепловой карты могут быть изменены с помощью дополнительного вызова метода
setData()
. Заново добавлять слой на карту при этом не требуется.
-
InfoWindow
- компонент карты для отображения информации во всплывающем окне. Для создания и размещения объекта на карте используются методыcreateInfoWindow()
иopenInfoWindow()
интерфейсаMapViewer
. Например:link:../../../source/map/InfoWindow.java[role=include]
Информационное окно может быть привязано к маркеру, например:
link:../../../source/map/InfoWindow2.java[role=include]
-
Label
- компонент для отображения текстовых подписей на карте.Label
можно создать и поместить на карту с помощью методовcreateLabel()
иaddLabel()
интерфейсаMapViewer
. Удалить его, в свою очередь, можно методомremoveLabel()
. Компонент поддерживает стили и разметку HTML .Компонент
Label
имеет следующие атрибуты:-
value
- строковое содержание подписи. Если выбран тип содержимогоHTML
, браузер выполнит парсинг этой строки для отображения содержимого. -
position
- объект, реализующий интерфейсGeoPoint
, в котором содержатся географические координаты подписи. -
contentType
- выбор типа содержимого из двух возможных значений:PLAIN_TEXT
иHTML
(будет парситься браузером). -
adjustment
- устанавливает расположение подписи относительно маркера геолокацииGeoPoint
. -
styleName
- позволяет установить дополнительные стили подписи.link:../../../source/map/MapLabel.java[role=include]
-
-
Marker
- компонент для отметки места на карте. По умолчанию используется стандартный значок сервиса карт. Для создания и размещения объекта на карте используются методыcreateMarker()
иaddMarker()
интерфейсаMapViewer
. Например:link:../../../source/map/MapMarker.java[role=include]
Метод
clearMarkers()
, в свою очередь, удаляет с карты все отметки.Интерфейс
MarkerImage
добавляет на слойMarker
изображение или пиктограмму.link:../../../source/map/MarkerImage.java[role=include]
-
Polyline
- компонент для отображения ломаной линии. Для создания и размещения объекта на карте используются методыcreatePolyline()
иaddPolyline()
интерфейсаMapViewer
. Например:link:../../../source/map/Polyline.java[role=include]
-
- Слушатели событий
-
Слушатели, перечисленные ниже, располагаются в пакете
com.haulmont.charts.gui.map.model.listeners
.-
CircleCenterChangeListener
- изменение положения круга в режиме редактирования карты. -
CircleCompleteListener
- создание круга в режиме редактирования. -
CircleRadiusChangeListener
- изменение радиуса круга в режиме редактирования. -
InfoWindowClosedListener
- закрытие информационного окна. -
MapInitListener
- завершение инициализации карты: вызывается один раз после первоначальной загрузки карты, когда тайлы загружены и координаты доступны. -
MapMoveListener
- перемещение карты с зажатой клавишей мыши. -
MarkerDragListener
- перетаскивание маркера. -
PolygonCompleteListener
- создание полигона в режиме редактирования. -
PolygonEditListener
- редактирование полигона (перемещение или добавление вершины существующего полигона).
Слушатели щелчков левой кнопки мыши:
-
CircleClickListener
- щелчок по кругу. -
MapClickListener
- щелчок по карте. -
MarkerClickListener
- щелчок по маркеру. -
PolygonClickListener
- щелчок по полигону.
Слушатели щелчков правой кнопки мыши:
-
CircleRightClickListener
- щелчок по кругу. -
MapRightCLickListener
- щелчок по карте. -
MarkerRightClickListener
- щелчок по маркеру. -
PolygonRightClickListener
- щелчок по полигону.
Слушатели двойных щелчков:
-
MarkerDoubleClickListener
- двойной щелчок по маркеру. -
CircleDoubleClickListener
- двойной щелчок по кругу.
-
Для более подробной информации о методах и параметрах компонентов карты см. соответствующие JavaDocs.