Масштабирование и центрирование

Масштабирование и центрирование - это основные функции карты, которые позволяют пользователям регулировать уровень масштаба и фокусироваться на определенных географических местоположениях в пределах отображения карты.

Дополнение Maps предоставляет методы, которые разработчики могут использовать для программного управления этими функциями.

Давайте рассмотрим некоторые методы класса GeoMap:

  • setCenter() - задает центральную географическую точку в видимой области карты. Координаты должны быть предоставлены в проекции карты, конкретно в EPSG:4326. В случае, если проекция карты была изменена с помощью setProjection(CRS), координаты должны быть указаны в этой скорректированной проекции. Важно различать проекцию карты и проекцию отображения, настроенную в GeoMapView карты. Проекция отображения влияет на то, как данные карты понимаются и отображаются, тогда как проекция карты задает систему координат для всех координат, передаваемых через публичный API.

  • setZoom(double zoom) - устанавливает карту на определенный уровень масштаба. Уровень масштаба начинается с 0, что представляет вид с максимальным отдалением, и увеличивается по мере приближения для детального просмотра.

  • zoomToExtent(Extent) - устанавливает видимую область карты так, чтобы она охватывала предоставленные географические границы с максимально возможным уровнем масштаба. Extent (экстент) - это ограничивающая рамка, которая определяет конкретную географическую область на карте. Экстент представлен набором координат: минимальные (левая, нижняя) и максимальные (правая, верхняя) координаты, которые очерчивают границы прямоугольной области на карте. Для более продвинутого метода масштабирования до определенного экстента используйте метод fit(FitOptions).

  • zoomToGeometry(SimpleGeometry) - устанавливает видимую область карты так, чтобы она охватывала оболочку предоставленной геометрии с максимально достижимым уровнем масштаба.

    Если предоставленная геометрия - это Point, карта будет центрирована на этой точке при текущем уровне масштаба.

    Более продвинутый метод масштабирования до определенной геометрии может быть достигнут с помощью метода fit(FitOptions).

  • zoomToFeature(Feature) - служебный метод, который извлекает геометрию из предоставленной сущности и делегирует вызов методу zoomToGeometry(SimpleGeometry).

  • fit(FitOptions) - корректирует предоставленную геометрию или экстент в соответствии с указанным размером карты, настройками границ и указанными опциями. Например, чтобы установить максимальный уровень масштаба и включить анимацию, можно использовать следующий подход:

    protected GeometryFactory geometryFactory = GeometryUtils.getGeometryFactory();
    
    @ViewComponent
    private GeoMap map;
    
    @Subscribe("map")
    public void onMapMapSingleClick(final MapSingleClickEvent event) {
        map.fit(new FitOptions(new PointFeature(
                geometryFactory.createPoint(event.getCoordinate())))
                .withDuration(2000)
                .withEasing(Easing.LINEAR)
                .withMaxZoom(20d));
    }

    FitOptions используются для настройки того, как отображение карты должно подстраиваться под конкретный экстент или геометрию. Эти опции предоставляют разработчикам контроль над такими аспектами, как уровень масштаба, длительность анимации, функции сглаживания и другие параметры, связанные с подгонкой отображения карты.

    Для получения дополнительной информации обратитесь к документации для View.