Spec-Zone.ru › OpenLayers

ol/View~View


import View from 'ol/View.js';

Объект View представляет собой простой двумерный вид карты.

Этот объект используется для изменения центра, разрешения и поворота карты.

У View есть projection. Проекция определяет систему координат центра, а её единицы — единицы разрешения (единицы проекции на пиксель). По умолчанию используется проекция Web Mercator (EPSG:3857).

Состояния вида

Вид определяется тремя состояниями: center, resolution и rotation. Для каждого состояния есть соответствующие методы получения и установки, например getCenter и setCenter для состояния center.

Состояние zoom фактически не сохраняется в объекте view: все вычисления внутри выполняются с использованием состояния resolution. Тем не менее доступны методы setZoom и getZoom, а также getResolutionForZoom и getZoomForResolution для переключения между системами.

Ограничения

Для изменения состояний вида можно использовать setCenter, setResolution и setRotation, однако заданные в конструкторе ограничения будут применяться при каждом изменении.

Для объекта View можно задать ограничение разрешения, ограничение поворота и ограничение центра.

Ограничение разрешения обычно задаёт минимальное и максимальное значения и привязку к определённым разрешениям. Оно определяется следующими параметрами: resolutions, maxResolution, maxZoom и zoomFactor. Если задан resolutions, остальные три параметра игнорируются. Дополнительные сведения см. в документации по каждому параметру. По умолчанию для вида заданы только минимальное и максимальное ограничения, а промежуточные уровни масштабирования разрешены, например, при масштабировании щипком.

Ограничение поворота привязывает поворот к определённым углам. Оно определяется следующими параметрами: enableRotation и constrainRotation. По умолчанию поворот разрешён, а его значение при приближении к горизонтальному положению привязывается к нулю.

Ограничение центра определяется параметром extent. По умолчанию положение центра вида никак не ограничено.

Изменение состояния вида

Важно учитывать, что setZoom, setResolution, setCenter и setRotation подчиняются указанным выше ограничениям. Поэтому иногда невозможно заранее определить, каким будет итоговое состояние View. Например, вызов setResolution(10) не гарантирует, что getResolution() вернёт 10.

Следовательно, при применении приращения к состоянию вида следует использовать adjustCenter, adjustRotation, adjustZoom и adjustResolution, а не соответствующие методы установки. Это позволит виду выполнить необходимые внутренние вычисления. Кроме того, методы adjust* принимают аргумент anchor, позволяющий задать начало преобразования.

Взаимодействие с видом

Ограничения вида обычно применяются только тогда, когда вид находится в покое, то есть когда взаимодействие или анимация не выполняются. Поэтому, если пользователь задаёт состояние, не соответствующее ограниченному состоянию (например, поворачивает вид, когда угол привязки равен 0), по окончании взаимодействия запускается анимация, возвращающая вид в стабильное состояние;

new View(options)

View.js, строка 314
Имя Тип Описание
center Coordinate | undefined

Начальный центр вида. Если пользовательская проекция не задана, система координат центра определяется параметром projection. Если этот параметр не задан, источники слоёв не будут загружаться, однако центр можно задать позже с помощью #setCenter.

constrainRotation boolean | number (по умолчанию true)

Ограничение поворота. Значение false означает отсутствие ограничений. Значение true означает отсутствие ограничений, но при приближении к нулю угол привязывается к нулю. Число задаёт количество допустимых значений поворота. Например, 4 ограничивает поворот значениями 0, 90, 180 и 270 градусов.

enableRotation boolean (по умолчанию true)

Разрешить поворот. Если задано значение false, используется ограничение поворота, всегда устанавливающее его значение равным нулю. Параметр constrainRotation не влияет на результат, если enableRotation имеет значение false.

extent Extent | undefined

Область, ограничивающая вид: за её пределами на карте ничего не отображается.

constrainOnlyCenter boolean (по умолчанию false)

Если значение true, ограничение области применяется только к центру вида, а не ко всей области.

smoothExtentConstraint boolean (по умолчанию true)

Если значение true, ограничение области применяется плавно, то есть виду разрешается немного выходить за пределы заданного extent.

maxResolution number | undefined

Максимальное разрешение, используемое для определения ограничения разрешения. Используется вместе с minResolution (или maxZoom) и zoomFactor. Если значение не задано, оно вычисляется так, чтобы область допустимости проекции помещалась в тайл размером 256x256 px. Если используется проекция Spherical Mercator (по умолчанию), maxResolution по умолчанию равно 40075016.68557849 / 256 = 156543.03392804097.

minResolution number | undefined

Минимальное разрешение, используемое для определения ограничения разрешения. Используется вместе с maxResolution (или minZoom) и zoomFactor. Если значение не задано, оно вычисляется исходя из 29 уровней масштабирования (с коэффициентом 2). Если используется проекция Spherical Mercator (по умолчанию), minResolution по умолчанию равно 40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253.

maxZoom number (по умолчанию 28)

Максимальный уровень масштабирования, используемый для определения ограничения разрешения. Используется вместе с minZoom (или maxResolution) и zoomFactor. Обратите внимание: если также задан minResolution, он имеет приоритет над maxZoom.

minZoom number (по умолчанию 0)

Минимальный уровень масштабирования, используемый для определения ограничения разрешения. Используется вместе с maxZoom (или minResolution) и zoomFactor. Обратите внимание: если также задан maxResolution, он имеет приоритет над minZoom.

multiWorld boolean (по умолчанию false)

Если задано значение false, вид ограничивается отображением только одного мира, и перемещать карту за его край нельзя. Если задано значение true, при малых уровнях масштабирования карта может отображать несколько миров. Используется только в том случае, если projection является глобальной. Обратите внимание: если также задан extent, он имеет приоритет.

constrainResolution boolean (по умолчанию false)

Если значение true, после взаимодействия анимация всегда переводит вид на ближайший уровень масштабирования; если значение false, разрешены промежуточные уровни масштабирования.

smoothResolutionConstraint boolean (по умолчанию true)

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

showFullExtent boolean (по умолчанию false)

Разрешить уменьшение масштаба до отображения всей заданной области. По умолчанию, если для вида задана область, пользователи не смогут уменьшить масштаб так, чтобы область просмотра превышала её размеры по какой-либо из сторон. Это означает, что вся область может быть не видна, если соотношение сторон области просмотра отличается от соотношения сторон заданной области. Если значение showFullExtent равно true, пользователь сможет уменьшить масштаб так, чтобы область просмотра превышала высоту или ширину заданной области, но не обе величины одновременно, что позволит отобразить область целиком.

projection ProjectionLike (по умолчанию 'EPSG:3857')

Проекция. По умолчанию используется Spherical Mercator.

resolution number | undefined

Начальное разрешение вида. Единицы измерения — projection на пиксель (например, метры на пиксель). Вместо этого можно задать zoom. Если не задан ни этот параметр, ни zoom, источники слоёв не будут загружаться, однако позднее их можно задать с помощью #setZoom или #setResolution.

resolutions Array.<number> | undefined

Массив разрешений, задающих уровни масштабирования. Индекс в массиве соответствует уровню масштабирования, поэтому значения разрешения должны быть расположены в порядке убывания. Также задаются ограничения минимального и максимального значения разрешения. Если этот параметр задан, параметры maxResolution, minResolution, minZoom, maxZoom и zoomFactor игнорируются.

rotation number (по умолчанию 0)

Начальный угол поворота вида в радианах (положительное значение означает поворот по часовой стрелке, 0 — север).

zoom number | undefined

Используется только в том случае, если resolution не задан. Уровень масштабирования, используемый для вычисления начального разрешения вида.

zoomFactor number (по умолчанию 2)

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

padding Array.<number> (по умолчанию [0, 0, 0, 0])

Отступы (в пикселях CSS). Если края области просмотра карты частично закрыты другим содержимым (наложениями), этот параметр позволяет сместить центр области просмотра в сторону от этого содержимого. Порядок значений: верхний, правый, нижний, левый отступ.

Генерирует события:
  • change (BaseEvent) — Общее событие изменения. Генерируется при увеличении счётчика ревизий.
  • change:center (ObjectEvent)
  • change:resolution (ObjectEvent)
  • change:rotation (ObjectEvent)
  • error (BaseEvent) — Общее событие ошибки. Генерируется при возникновении ошибки.
  • propertychange (ObjectEvent) — Генерируется при изменении свойства.

Наследует

  • BaseObject

Наблюдаемые свойства

Имя Тип Можно задать Тип ObjectEvent Описание
center Coordinate | undefined да change:center

Центр вида.

resolution number | undefined да change:resolution

Разрешение вида.

rotation number да change:rotation

Угол поворота вида в радианах.

Элементы

padding{Array.<number>} {undefined}

Отступы (в пикселях CSS). Если края области просмотра карты частично закрыты другим содержимым (наложениями), этот параметр позволяет сместить центр области просмотра в сторону от этого содержимого. Порядок значений в массиве: верхний, правый, нижний, левый отступ. По умолчанию отступы отсутствуют, что эквивалентно [0, 0, 0, 0].

Методы

adjustCenter(deltaCoordinates)

View.js, строка 1546

Добавляет относительные координаты к центру вида. Применяются все ограничения экстента.

Имя Тип Описание
deltaCoordinates Coordinate

Относительное значение для добавления.

adjustResolution(ratio, anchor)

View.js, строка 1573

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

Имя Тип Описание
ratio number

Коэффициент для применения к разрешению вида.

anchor Coordinate | undefined

Начало преобразования.

adjustRotation(delta, anchor)

View.js, строка 1620

Добавляет значение к углу поворота вида, при необходимости используя опорную точку. Применяются все ограничения поворота.

Имя Тип Описание
delta number

Относительное значение в радианах, добавляемое к углу поворота при масштабировании.

anchor Coordinate | undefined

Центр поворота.

adjustZoom(delta, anchor)

View.js, строка 1609

Добавляет значение к уровню масштабирования вида, при необходимости используя опорную точку. Применяются все ограничения разрешения.

Имя Тип Описание
delta number

Относительное значение для добавления к уровню масштабирования.

anchor Coordinate | undefined

Начало преобразования.

animate(var_args)

View.js, строка 588

Анимирует вид. Центр, масштаб (или разрешение) и поворот вида можно анимировать, чтобы обеспечить плавный переход между состояниями вида. Например, чтобы анимировать переход вида на новый уровень масштабирования:

view.animate({zoom: view.getZoom() + 1});

По умолчанию анимация длится одну секунду и использует функцию плавного ускорения и замедления. Это поведение можно настроить, указав параметры duration (в миллисекундах) и easing (см. ol/easing).

Чтобы объединить несколько анимаций в последовательность, вызовите метод с несколькими объектами анимации. Например, чтобы сначала изменить масштаб, а затем выполнить панорамирование:

view.animate({zoom: 10}, {center: [0, 0]});

Если передать методу animate функцию в качестве последнего аргумента, она будет вызвана по окончании серии анимаций. Функция обратного вызова получит значение true, если серия анимаций завершилась самостоятельно, или false, если она была отменена.

Анимации отменяются при взаимодействии с пользователем (например, перетаскивании карты) или при вызове view.setCenter(), view.setResolution() или view.setRotation() (а также другого метода, вызывающего один из этих методов).

Имя Тип Описание
var_args

Параметры анимации. Несколько анимаций можно выполнить последовательно, передав несколько объектов параметров. Чтобы выполнить несколько анимаций параллельно, вызовите метод несколько раз. В качестве последнего аргумента можно передать необязательную функцию обратного вызова. Она получит логическое значение, указывающее, завершилась ли анимация без отмены.

Имя Тип Описание
center Coordinate | undefined

Центр вида по окончании анимации.

zoom number | undefined

Уровень масштабирования вида по окончании анимации. Имеет приоритет над resolution.

resolution number | undefined

Разрешение вида по окончании анимации. Если также указано zoom, этот параметр игнорируется.

rotation number | undefined

Угол поворота вида по окончании анимации.

anchor Coordinate | undefined

Необязательная опорная точка, которая остаётся неподвижной во время анимации поворота или разрешения.

duration number (defaults to 1000)

Длительность анимации в миллисекундах.

easing function | undefined

Функция плавности, используемая во время анимации (по умолчанию inAndOut). Функция вызывается для каждого кадра с числом, представляющим долю длительности анимации. Она должна возвращать число от 0 до 1, обозначающее прогресс перехода к целевому состоянию.

beginInteraction()

View.js, строка 1836

Сообщает View о начале взаимодействия. При необходимости состояние вида будет приведено к стабильному (с учётом его ограничений).

calculateExtent(size){Extent}

View.js, строка 1000

Вычисляет экстент для текущего состояния вида и заданного размера рамки.

Имя Тип Описание
size Size | undefined

Размеры рамки в пикселях, в которую должен вписываться вычисленный экстент. По умолчанию используется размер карты, с которой связан вид. Если с видом не связана ни одна карта или связано несколько карт, укажите нужный размер рамки (например, map.getSize()).

Возвращает:
Экстент.

cancelAnimations()

View.js, строка 728

Отменяет все выполняющиеся анимации.

centerOn(coordinate, size, position)

View.js, строка 1481

Центрирует вид по координате и заданной позиции.

Имя Тип Описание
coordinate Coordinate

Координата.

size Size

Размер рамки в пикселях.

position Pixel

Позиция на виде, по которой нужно выполнить центрирование.

changed() унаследовано

Observable.js, строка 68

Увеличивает счётчик ревизий и отправляет событие 'change'.

dispatchEvent(event){boolean | undefined} унаследовано

events/Target.js, строка 85

Отправляет событие и вызывает все обработчики, ожидающие события этого типа. Параметр события может быть строкой или объектом со свойством type.

Имя Тип Описание
event BaseEvent | string

Объект события.

Возвращает:
false, если кто-либо вызвал preventDefault для объекта события или если один из обработчиков вернул false.

endInteraction(duration, resolutionDirection, anchor)

View.js, строка 1850

Сообщает View о завершении взаимодействия. При необходимости состояние вида будет приведено к стабильному (с учётом его ограничений).

Имя Тип Описание
duration number | undefined

Длительность анимации в миллисекундах.

resolutionDirection number | undefined

Направление изменения масштаба.

anchor Coordinate | undefined

Начало преобразования.

fit(geometryOrExtent, options)

View.js, строка 1345

Вписывает заданную геометрию или экстент с учётом размера карты и отступов. Размер — это размеры рамки в пикселях, в которую нужно вписать экстент. В большинстве случаев следует использовать размер карты, то есть map.getSize(). Учитывает угол поворота карты.

Имя Тип Описание
geometryOrExtent SimpleGeometry | Extent

Геометрия или экстент, под который нужно подстроить вид.

options

Параметры.

Имя Тип Описание
size Size | undefined

Размер рамки в пикселях, в которую нужно вписать экстент. По умолчанию используется размер карты, с которой связан вид. Если с видом не связана ни одна карта или связано несколько карт, укажите нужный размер рамки (например, map.getSize()).

padding Array.<number> (defaults to [0, 0, 0, 0])

Отступы в пикселях внутри вида. Значения в массиве задают отступы сверху, справа, снизу и слева.

nearest boolean (defaults to false)

Если параметр constrainResolution вида имеет значение true, возвращает ближайший экстент, а не наиболее близкий экстент, который действительно вписывается в вид.

minResolution number (defaults to 0)

Минимальное разрешение, до которого выполняется масштабирование.

maxZoom number | undefined

Максимальный уровень масштабирования. Если задано minResolution, это свойство игнорируется.

duration number | undefined

Длительность анимации в миллисекундах. По умолчанию переход к целевому экстенту выполняется без анимации.

easing function | undefined

Функция плавности, используемая во время анимации (по умолчанию inAndOut). Функция вызывается для каждого кадра с числом, представляющим долю длительности анимации. Она должна возвращать число от 0 до 1, обозначающее прогресс перехода к целевому состоянию.

callback function | undefined

Функция, вызываемая, когда вид достигает конечного положения. Функция обратного вызова получит значение true, если серия анимаций завершилась самостоятельно, или false, если она была отменена.

get(key){*} унаследовано

Object.js, строка 136

Получает значение.

Имя Тип Описание
key string

Имя ключа.

Возвращает:
Значение.

getAnimating(){boolean}

View.js, строка 711

Проверяет, выполняется ли анимация вида.

Возвращает:
Выполняется ли анимация вида.

getCenter(){Coordinate | undefined}

View.js, строка 945

Получает центр вида.

Возвращает:
Центр вида.

getInteracting(){boolean}

View.js, строка 720

Проверяет, взаимодействует ли пользователь с видом, например выполняет панорамирование или масштабирование.

Возвращает:
Выполняется ли взаимодействие с видом.

getKeys(){Array.<string>} унаследовано

Object.js, строка 149

Получает список имён свойств объекта.

Возвращает:
Список имён свойств.

getMaxResolution(){number}

View.js, строка 1029

Получает максимальное разрешение вида.

Возвращает:
Максимальное разрешение вида.

getMaxZoom(){number}

View.js, строка 1047

Получает максимальный уровень масштабирования вида.

Возвращает:
Максимальный уровень масштабирования.

getMinResolution(){number}

View.js, строка 1038

Получает минимальное разрешение вида.

Возвращает:
Минимальное разрешение вида.

getMinZoom(){number}

View.js, строка 1067

Получает минимальный уровень масштабирования вида.

Возвращает:
Минимальный уровень масштабирования.

getProjection(){Projection}

View.js, строка 1096

Получает проекцию вида.

Возвращает:
Проекция вида.

getProperties(){NoInfer.<Properties>} унаследовано

Object.js, строка 158

Получает объект со всеми именами и значениями свойств.

Возвращает:
Объект.

getResolution(){number | undefined}

View.js, строка 1106

Получает разрешение вида.

Возвращает:
Разрешение вида.

getResolutionForExtent(extent, size){number}

View.js, строка 1128

Получает разрешение для заданного экстента (в единицах карты) и размера (в пикселях).

Имя Тип Описание
extent Extent

Экстент.

size Size | undefined

Размер рамки в пикселях.

Возвращает:
Разрешение, при котором заданный экстент будет отображаться с указанным размером.

getResolutionForZoom(zoom){number}

View.js, строка 1313

Получает разрешение для заданного уровня масштабирования.

Имя Тип Описание
zoom number

Уровень масштабирования.

Возвращает:
Разрешение вида для заданного уровня масштабирования.

getResolutions(){Array.<number> | undefined}

View.js, строка 1116

Получает разрешения для вида. Возвращает массив разрешений, переданный конструктору View, или undefined, если значения не были заданы.

Возвращает:
Разрешения вида.

getRevision(){number} унаследовано

Observable.js, строка 79

Получает номер версии объекта. При каждом изменении объекта номер его версии увеличивается.

Возвращает:
Номер ревизии.

getRotation(){number}

View.js, строка 1178

Получить угол поворота вида.

Возвращает:
Угол поворота вида в радианах.

getZoom(){number | undefined}

View.js, строка 1273

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

Возвращает:
Уровень масштабирования.

getZoomForResolution(resolution){number | undefined}

View.js, строка 1288

Получить уровень масштабирования для заданного разрешения.

Имя Тип Описание
resolution number

Разрешение.

Возвращает:
Уровень масштабирования для указанного разрешения.

on(type, listener){EventsKey | Array<EventsKey>} унаследовано

Observable.js, строка 152

Прослушивать события указанного типа.

Имя Тип Описание
type string | Array.<string>

Тип события или массив типов событий.

listener function

Функция-обработчик.

Возвращает:
Уникальный ключ для обработчика. Если первым аргументом передан массив типов событий, будет возвращен массив ключей.

once(type, listener){EventsKey | Array<EventsKey>} унаследовано

Observable.js, строка 164

Однократно прослушивать события указанного типа.

Имя Тип Описание
type string | Array.<string>

Тип события или массив типов событий.

listener function

Функция-обработчик.

Возвращает:
Уникальный ключ для обработчика. Если первым аргументом передан массив типов событий, будет возвращен массив ключей.

set(key, value, silent) унаследовано

Object.js, строка 218

Задать значение.

Имя Тип Описание
key string

Имя ключа.

value *

Значение.

silent boolean | undefined

Обновить без вызова события.

setCenter(center)

View.js, строка 1650

Задать центр текущего вида. Применяются все ограничения экстента.

Имя Тип Описание
center Coordinate | undefined

Центр вида.

setConstrainResolution(enabled)

View.js, строка 1087

Задать, может ли вид использовать промежуточные уровни масштабирования.

Имя Тип Описание
enabled boolean

Ограничено ли разрешение.

setMaxZoom(zoom)

View.js, строка 1058

Задать новый максимальный уровень масштабирования для вида.

Имя Тип Описание
zoom number

Максимальный уровень масштабирования.

setMinZoom(zoom)

View.js, строка 1078

Задать новый минимальный уровень масштабирования для вида.

Имя Тип Описание
zoom number

Минимальный уровень масштабирования.

setProperties(values, silent) унаследовано

Object.js, строка 238

Задать набор пар «ключ-значение». Обратите внимание: при этом изменяются существующие свойства и добавляются новые (существующие свойства не удаляются).

Имя Тип Описание
values Partial.<NoInfer.<Properties>>

Значения.

silent boolean | undefined

Обновить без вызова события.

setResolution(resolution)

View.js, строка 1682

Задать разрешение для этого вида. Применяются все ограничения разрешения.

Имя Тип Описание
resolution number | undefined

Разрешение вида.

setRotation(rotation)

View.js, строка 1693

Задать угол поворота для этого вида. Применяются все ограничения угла поворота.

Имя Тип Описание
rotation number

Угол поворота вида в радианах.

setZoom(zoom)

View.js, строка 1703

Установить заданный уровень масштабирования. Применяются все ограничения разрешения.

Имя Тип Описание
zoom number

Уровень масштабирования.

un(type, listener) унаследовано

Observable.js, строка 173

Прекратить прослушивание событий указанного типа.

Имя Тип Описание
type string | Array.<string>

Тип события или массив типов событий.

listener function

Функция-обработчик.

unset(key, silent) унаследовано

Object.js, строка 262

Удалить свойство.

Имя Тип Описание
key string

Имя ключа.

silent boolean | undefined

Удалить без вызова события.

© 2005-present, OpenLayers Contributors All rights reserved.Licensed under the BSD 2-Clause License.
https://openlayers.org/en/latest/apidoc/module-ol_View-View.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API