Компонент карты
UI-компонент GeoMap отображает географические данные, предоставляемые слоями.
Карта строится путем наложения слоев. Изначально карта не имеет слоев.
Вы можете определить общие параметры карты вместе со слоями в XML-дескрипторе экрана.
Карта
Чтобы добавить компонент на экран, используйте Jmix Studio.
Нажмите Add Component на панели действий, найдите элемент GeoMap и дважды щелкните по нему.
 
Новый элемент geoMap будет добавлен как на панели структуры Jmix UI, так и в XML. Вы можете настраивать атрибуты, такие как id, height, width и т.д., так же, как это делается для других UI-компонентов.
<maps:geoMap id="map"
             height="100%"
             width="100%"/>Если вы не используете дизайнер экранов, объявите пространство имен maps в XML-дескрипторе вашего экрана вручную:
<view xmlns="http://jmix.io/schema/flowui/view"
      xmlns:maps="http://jmix.io/schema/maps/ui"
      title="msg://mapBasicView.title">Вы можете инжектировать UI-компонент или слой карты в контроллер, используя действие Inject to Controller на панели структуры Jmix UI:
 
Альтернативно, вы можете использовать кнопку Inject, доступную на панели действий:
 
| Чтобы компонент можно было инжектировать в контроллер, у него должен быть указан атрибут id. | 
Теперь вы можете взаимодействовать с компонентом GeoMap программно, обращаясь к его методам напрямую:
@ViewComponent
private GeoMap geoMap;
@Subscribe
public void onInit(final InitEvent event) {
    geoMap.addLayer(new TileLayer()
            .withSource(new OsmSource()
                    .withUrl("https://tile.openstreetmap.org/{z}/{x}/{y}.png")
                    .withOpaque(true)
                    .withMaxZoom(10)));
}Слой
Компонент GeoMap может включать несколько слоев, которые отображают различные типы географической информации, такие как растровые слои и векторные слои.
Изначально карта не имеет слоев.
Например, давайте добавим TileLayer на карту.
Выберите элемент geoMap на панели структуры Jmix UI или в XML-дескрипторе экрана, затем нажмите кнопку Add на панели инспектора. В выпадающем списке выберите Layers → TileLayer.
 
Вы можете инжектировать слой в контроллер и взаимодействовать с ним программно, обращаясь к его методам напрямую:
@ViewComponent("map.tile")
private TileLayer mapTile;
@Subscribe
public void onInit(final InitEvent event) {
    mapTile.setSource(new XyzSource()
            .withUrl("https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}"));
}Источник
Источник представляет данные, которые используются для отрисовки слоев карты на компоненте карты. Источники предоставляют пространственную информацию, которая определяет содержимое и внешний вид слоев карты.
Например, давайте добавим OsmSource для тайлового слоя.
Выберите maps:tile на панели структуры Jmix UI или в XML-дескрипторе экрана, а затем нажмите кнопку Add на панели инспектора. В выпадающем списке выберите OsmSource.
 
<maps:layers>
    <maps:tile>
        <maps:osmSource attributions="© Your Attribution Info"
                        maxZoom="34"/>
    </maps:tile>
</maps:layers>Вы можете инжектировать источник в контроллер и взаимодействовать с ним программно, обращаясь к его методам напрямую:
@ViewComponent("map.tile.osmSource")
private OsmSource osmSource;
@Subscribe
public void onInit(final InitEvent event) {
    osmSource.withUrl("https://tile.openstreetmap.org/{z}/{x}/{y}.png")
            .withMaxZoom(12)
            .withWrapX(false);
}Отображение
Отображение (View) определяет, как карта отображается с точки зрения ее центра, уровня масштабирования, поворота и проекции. По сути, отображение задает начальное состояние карты при ее загрузке в пользовательском интерфейсе.
По умолчанию компонент geoMap отображает карту мира с начальным географическим центром в (0,0).
Выберите geoMap на панели структуры Jmix UI или в XML-дескрипторе экрана, а затем нажмите кнопку Add на панели инспектора. В выпадающем списке выберите MapView.
 
<maps:mapView centerX="10.872461786203276"
              centerY="48.36928140366503"
              zoom="4.0"/>Вы можете указать дополнительные параметры:
- 
centerXопределяет широту начального географического центра карты. Передается в объектorg.locationtech.jts.geom.Coordinate.
- 
centerYопределяет долготу начального географического центра карты. Передается в объектorg.locationtech.jts.geom.Coordinate.
- 
maxZoom- устанавливает максимальный уровень масштабирования для отображения.
- 
minZoom- устанавливает минимальный уровень масштабирования для отображения.
- 
projectionотносится к системе координат, в которой отображается карта. Распространенные проекции включаютEPSG:3857иEPSG:4326. Проекция по умолчанию - EPSG:3857. Вы можете установить пользовательскую проекцию в специальном внутреннем элементеprojection. Подробнее смотрите Projection.
- 
rotation- устанавливает поворот для отображения в радианах (положительный поворот по часовой стрелке, 0 означает Север). Подробнее смотрите setRotation.
- 
zoomопределяет конкретный уровень масштабирования. Уровень масштабирования начинается с 0, представляя вид с максимальным отдалением, и постепенно увеличивается по мере приближения.
Экстент
Экстент (extent) задает географические границы отображения карты или конкретного слоя в терминах координат, определяя видимую область на карте.
Экстент обычно определяется минимальными (левый верхний угол) и максимальными (правый нижний угол) значениями координат в форме [minX, minY, maxX, maxY], представляя ограничивающую рамку области.
Выберите слой или элемент mapView на панели структуры Jmix UI или в XML-дескрипторе экрана, а затем нажмите кнопку Add на панели инспектора. В выпадающем списке выберите Extent и настройте атрибуты minX, minY, maxX и maxY, как указано ниже.
<maps:mapView centerY="51.0"
              centerX="40.0"
              zoom="4.0">
    <maps:extent minX="-15.0"
                 minY="30.0"
                 maxX="40.0"
                 maxY="60.0"/>
</maps:mapView>