Для отображения карт в экранах приложения используется компонент 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.