Skip to content

Latest commit

 

History

History
227 lines (195 loc) · 13.1 KB

mapViewer.adoc

File metadata and controls

227 lines (195 loc) · 13.1 KB

Компонент MapViewer

Для отображения карт в экранах приложения используется компонент 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]
    Circle
    Figure 1. Объект Circle
  • 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]
    HeatMap
    Figure 2. HeatMapLayer

    Данные добавленного на карту слоя тепловой карты могут быть изменены с помощью дополнительного вызова метода setData(). Заново добавлять слой на карту при этом не требуется.

  • InfoWindow – компонент карты для отображения информации во всплывающем окне. Для создания и размещения объекта на карте используются методы createInfoWindow() и openInfoWindow() интерфейса MapViewer. Например:

    link:../../../source/map/InfoWindow.java[role=include]

    Информационное окно может быть привязано к маркеру, например:

    link:../../../source/map/InfoWindow2.java[role=include]
    InfoWindow
    Figure 3. Информационное окно
  • 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]
      MapLabel
      Figure 4. Компонент Label
  • Marker – компонент для отметки места на карте. По умолчанию используется стандартный значок сервиса карт. Для создания и размещения объекта на карте используются методы createMarker() и addMarker() интерфейса MapViewer. Например:

    link:../../../source/map/MapMarker.java[role=include]

    Метод clearMarkers(), в свою очередь, удаляет с карты все отметки.

    Интерфейс MarkerImage добавляет на слой Marker изображение или пиктограмму.

    link:../../../source/map/MarkerImage.java[role=include]
    MarkerImage
    Figure 5. Компонент Marker
  • Polyline – компонент для отображения ломаной линии. Для создания и размещения объекта на карте используются методы createPolyline() и addPolyline() интерфейса MapViewer. Например:

    link:../../../source/map/Polyline.java[role=include]
    Polyline
    Figure 6. Компонент Polyline
  • Polygon – компонент для отображения полигона. Для создания и размещения объекта на карте используются методы createPolygon() и addPolygonOverlay() интерфейса MapViewer. Например:

    link:../../../source/map/PolygonOverlay.java[role=include]
    Polygon
    Figure 7. Компонент Polygon
Слушатели событий

Слушатели, перечисленные ниже, располагаются в пакете 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.