Skip to content

Latest commit

 

History

History
220 lines (188 loc) · 12.8 KB

mapViewer.adoc

File metadata and controls

220 lines (188 loc) · 12.8 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
  • 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

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

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

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

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

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

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

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

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

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

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

    link:../../../source/map/PolygonOverlay.java[role=include]
    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.