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)
-
Имя Тип Описание centerCoordinate | undefined Начальный центр вида. Если пользовательская проекция не задана, система координат центра определяется параметром
projection. Если этот параметр не задан, источники слоёв не будут загружаться, однако центр можно задать позже с помощью#setCenter.constrainRotationboolean | number (по умолчанию true) Ограничение поворота. Значение
falseозначает отсутствие ограничений. Значениеtrueозначает отсутствие ограничений, но при приближении к нулю угол привязывается к нулю. Число задаёт количество допустимых значений поворота. Например,4ограничивает поворот значениями 0, 90, 180 и 270 градусов.enableRotationboolean (по умолчанию true) Разрешить поворот. Если задано значение
false, используется ограничение поворота, всегда устанавливающее его значение равным нулю. ПараметрconstrainRotationне влияет на результат, еслиenableRotationимеет значениеfalse.extentExtent | undefined Область, ограничивающая вид: за её пределами на карте ничего не отображается.
constrainOnlyCenterboolean (по умолчанию false) Если значение true, ограничение области применяется только к центру вида, а не ко всей области.
smoothExtentConstraintboolean (по умолчанию true) Если значение true, ограничение области применяется плавно, то есть виду разрешается немного выходить за пределы заданного
extent.maxResolutionnumber | undefined Максимальное разрешение, используемое для определения ограничения разрешения. Используется вместе с
minResolution(илиmaxZoom) иzoomFactor. Если значение не задано, оно вычисляется так, чтобы область допустимости проекции помещалась в тайл размером 256x256 px. Если используется проекция Spherical Mercator (по умолчанию),maxResolutionпо умолчанию равно40075016.68557849 / 256 = 156543.03392804097.minResolutionnumber | undefined Минимальное разрешение, используемое для определения ограничения разрешения. Используется вместе с
maxResolution(илиminZoom) иzoomFactor. Если значение не задано, оно вычисляется исходя из 29 уровней масштабирования (с коэффициентом 2). Если используется проекция Spherical Mercator (по умолчанию),minResolutionпо умолчанию равно40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253.maxZoomnumber (по умолчанию 28) Максимальный уровень масштабирования, используемый для определения ограничения разрешения. Используется вместе с
minZoom(илиmaxResolution) иzoomFactor. Обратите внимание: если также заданminResolution, он имеет приоритет надmaxZoom.minZoomnumber (по умолчанию 0) Минимальный уровень масштабирования, используемый для определения ограничения разрешения. Используется вместе с
maxZoom(илиminResolution) иzoomFactor. Обратите внимание: если также заданmaxResolution, он имеет приоритет надminZoom.multiWorldboolean (по умолчанию false) Если задано значение
false, вид ограничивается отображением только одного мира, и перемещать карту за его край нельзя. Если задано значениеtrue, при малых уровнях масштабирования карта может отображать несколько миров. Используется только в том случае, еслиprojectionявляется глобальной. Обратите внимание: если также заданextent, он имеет приоритет.constrainResolutionboolean (по умолчанию false) Если значение true, после взаимодействия анимация всегда переводит вид на ближайший уровень масштабирования; если значение false, разрешены промежуточные уровни масштабирования.
smoothResolutionConstraintboolean (по умолчанию true) Если значение true, минимальное и максимальное значения разрешения применяются плавно, то есть виду разрешается немного выходить за заданные границы разрешения или масштаба.
showFullExtentboolean (по умолчанию false) Разрешить уменьшение масштаба до отображения всей заданной области. По умолчанию, если для вида задана область, пользователи не смогут уменьшить масштаб так, чтобы область просмотра превышала её размеры по какой-либо из сторон. Это означает, что вся область может быть не видна, если соотношение сторон области просмотра отличается от соотношения сторон заданной области. Если значение showFullExtent равно true, пользователь сможет уменьшить масштаб так, чтобы область просмотра превышала высоту или ширину заданной области, но не обе величины одновременно, что позволит отобразить область целиком.
projectionProjectionLike (по умолчанию 'EPSG:3857') Проекция. По умолчанию используется Spherical Mercator.
resolutionnumber | undefined Начальное разрешение вида. Единицы измерения —
projectionна пиксель (например, метры на пиксель). Вместо этого можно задатьzoom. Если не задан ни этот параметр, ниzoom, источники слоёв не будут загружаться, однако позднее их можно задать с помощью#setZoomили#setResolution.resolutionsArray.<number> | undefined Массив разрешений, задающих уровни масштабирования. Индекс в массиве соответствует уровню масштабирования, поэтому значения разрешения должны быть расположены в порядке убывания. Также задаются ограничения минимального и максимального значения разрешения. Если этот параметр задан, параметры
maxResolution,minResolution,minZoom,maxZoomиzoomFactorигнорируются.rotationnumber (по умолчанию 0) Начальный угол поворота вида в радианах (положительное значение означает поворот по часовой стрелке, 0 — север).
zoomnumber | undefined Используется только в том случае, если
resolutionне задан. Уровень масштабирования, используемый для вычисления начального разрешения вида.zoomFactornumber (по умолчанию 2) Коэффициент масштабирования, используемый для вычисления соответствующего разрешения.
paddingArray.<number> (по умолчанию [0, 0, 0, 0]) Отступы (в пикселях CSS). Если края области просмотра карты частично закрыты другим содержимым (наложениями), этот параметр позволяет сместить центр области просмотра в сторону от этого содержимого. Порядок значений: верхний, правый, нижний, левый отступ.
Генерирует события:
-
change(BaseEvent) — Общее событие изменения. Генерируется при увеличении счётчика ревизий. -
change:center(ObjectEvent) -
change:resolution(ObjectEvent) -
change:rotation(ObjectEvent) -
error(BaseEvent) — Общее событие ошибки. Генерируется при возникновении ошибки. -
propertychange(ObjectEvent) — Генерируется при изменении свойства.
-
Наследует
Наблюдаемые свойства
| Имя | Тип | Можно задать | Тип 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)
-
Добавляет относительные координаты к центру вида. Применяются все ограничения экстента.
Имя Тип Описание deltaCoordinatesCoordinate Относительное значение для добавления.
-
adjustResolution(ratio, anchor)
-
Умножает разрешение вида на коэффициент, при необходимости используя опорную точку. Применяются все ограничения разрешения.
Имя Тип Описание rationumber Коэффициент для применения к разрешению вида.
anchorCoordinate | undefined Начало преобразования.
-
adjustRotation(delta, anchor)
-
Добавляет значение к углу поворота вида, при необходимости используя опорную точку. Применяются все ограничения поворота.
Имя Тип Описание deltanumber Относительное значение в радианах, добавляемое к углу поворота при масштабировании.
anchorCoordinate | undefined Центр поворота.
-
adjustZoom(delta, anchor)
-
Добавляет значение к уровню масштабирования вида, при необходимости используя опорную точку. Применяются все ограничения разрешения.
Имя Тип Описание deltanumber Относительное значение для добавления к уровню масштабирования.
anchorCoordinate | undefined Начало преобразования.
-
animate(var_args)
-
Анимирует вид. Центр, масштаб (или разрешение) и поворот вида можно анимировать, чтобы обеспечить плавный переход между состояниями вида. Например, чтобы анимировать переход вида на новый уровень масштабирования:
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Параметры анимации. Несколько анимаций можно выполнить последовательно, передав несколько объектов параметров. Чтобы выполнить несколько анимаций параллельно, вызовите метод несколько раз. В качестве последнего аргумента можно передать необязательную функцию обратного вызова. Она получит логическое значение, указывающее, завершилась ли анимация без отмены.
Имя Тип Описание centerCoordinate | undefined Центр вида по окончании анимации.
zoomnumber | undefined Уровень масштабирования вида по окончании анимации. Имеет приоритет над
resolution.resolutionnumber | undefined Разрешение вида по окончании анимации. Если также указано
zoom, этот параметр игнорируется.rotationnumber | undefined Угол поворота вида по окончании анимации.
anchorCoordinate | undefined Необязательная опорная точка, которая остаётся неподвижной во время анимации поворота или разрешения.
durationnumber (defaults to 1000) Длительность анимации в миллисекундах.
easingfunction | undefined Функция плавности, используемая во время анимации (по умолчанию
inAndOut). Функция вызывается для каждого кадра с числом, представляющим долю длительности анимации. Она должна возвращать число от 0 до 1, обозначающее прогресс перехода к целевому состоянию. -
beginInteraction()
-
Сообщает View о начале взаимодействия. При необходимости состояние вида будет приведено к стабильному (с учётом его ограничений).
-
calculateExtent(size){Extent}
-
Вычисляет экстент для текущего состояния вида и заданного размера рамки.
Имя Тип Описание sizeSize | undefined Размеры рамки в пикселях, в которую должен вписываться вычисленный экстент. По умолчанию используется размер карты, с которой связан вид. Если с видом не связана ни одна карта или связано несколько карт, укажите нужный размер рамки (например,
map.getSize()).Возвращает:
Экстент.
-
cancelAnimations()
-
Отменяет все выполняющиеся анимации.
-
centerOn(coordinate, size, position)
-
Центрирует вид по координате и заданной позиции.
Имя Тип Описание coordinateCoordinate Координата.
sizeSize Размер рамки в пикселях.
positionPixel Позиция на виде, по которой нужно выполнить центрирование.
-
changed() унаследовано
-
Увеличивает счётчик ревизий и отправляет событие 'change'.
-
dispatchEvent(event){boolean | undefined} унаследовано
-
Отправляет событие и вызывает все обработчики, ожидающие события этого типа. Параметр события может быть строкой или объектом со свойством
type.Имя Тип Описание eventBaseEvent | string Объект события.
Возвращает:
false, если кто-либо вызвал preventDefault для объекта события или если один из обработчиков вернул false.
-
endInteraction(duration, resolutionDirection, anchor)
-
Сообщает View о завершении взаимодействия. При необходимости состояние вида будет приведено к стабильному (с учётом его ограничений).
Имя Тип Описание durationnumber | undefined Длительность анимации в миллисекундах.
resolutionDirectionnumber | undefined Направление изменения масштаба.
anchorCoordinate | undefined Начало преобразования.
-
fit(geometryOrExtent, options)
-
Вписывает заданную геометрию или экстент с учётом размера карты и отступов. Размер — это размеры рамки в пикселях, в которую нужно вписать экстент. В большинстве случаев следует использовать размер карты, то есть
map.getSize(). Учитывает угол поворота карты.Имя Тип Описание geometryOrExtentSimpleGeometry | Extent Геометрия или экстент, под который нужно подстроить вид.
optionsПараметры.
Имя Тип Описание sizeSize | undefined Размер рамки в пикселях, в которую нужно вписать экстент. По умолчанию используется размер карты, с которой связан вид. Если с видом не связана ни одна карта или связано несколько карт, укажите нужный размер рамки (например,
map.getSize()).paddingArray.<number> (defaults to [0, 0, 0, 0]) Отступы в пикселях внутри вида. Значения в массиве задают отступы сверху, справа, снизу и слева.
nearestboolean (defaults to false) Если параметр
constrainResolutionвида имеет значениеtrue, возвращает ближайший экстент, а не наиболее близкий экстент, который действительно вписывается в вид.minResolutionnumber (defaults to 0) Минимальное разрешение, до которого выполняется масштабирование.
maxZoomnumber | undefined Максимальный уровень масштабирования. Если задано
minResolution, это свойство игнорируется.durationnumber | undefined Длительность анимации в миллисекундах. По умолчанию переход к целевому экстенту выполняется без анимации.
easingfunction | undefined Функция плавности, используемая во время анимации (по умолчанию
inAndOut). Функция вызывается для каждого кадра с числом, представляющим долю длительности анимации. Она должна возвращать число от 0 до 1, обозначающее прогресс перехода к целевому состоянию.callbackfunction | undefined Функция, вызываемая, когда вид достигает конечного положения. Функция обратного вызова получит значение
true, если серия анимаций завершилась самостоятельно, илиfalse, если она была отменена. -
get(key){*} унаследовано
-
Получает значение.
Имя Тип Описание keystring Имя ключа.
Возвращает:
Значение.
-
getAnimating(){boolean}
-
Проверяет, выполняется ли анимация вида.
Возвращает:
Выполняется ли анимация вида.
-
getCenter(){Coordinate | undefined}
-
Получает центр вида.
Возвращает:
Центр вида.
-
getInteracting(){boolean}
-
Проверяет, взаимодействует ли пользователь с видом, например выполняет панорамирование или масштабирование.
Возвращает:
Выполняется ли взаимодействие с видом.
-
getKeys(){Array.<string>} унаследовано
-
Получает список имён свойств объекта.
Возвращает:
Список имён свойств.
-
getMaxResolution(){number}
-
Получает максимальное разрешение вида.
Возвращает:
Максимальное разрешение вида.
-
getMaxZoom(){number}
-
Получает максимальный уровень масштабирования вида.
Возвращает:
Максимальный уровень масштабирования.
-
getMinResolution(){number}
-
Получает минимальное разрешение вида.
Возвращает:
Минимальное разрешение вида.
-
getMinZoom(){number}
-
Получает минимальный уровень масштабирования вида.
Возвращает:
Минимальный уровень масштабирования.
-
getProjection(){Projection}
-
Получает проекцию вида.
Возвращает:
Проекция вида.
-
getProperties(){NoInfer.<Properties>} унаследовано
-
Получает объект со всеми именами и значениями свойств.
Возвращает:
Объект.
-
getResolution(){number | undefined}
-
Получает разрешение вида.
Возвращает:
Разрешение вида.
-
getResolutionForExtent(extent, size){number}
-
Получает разрешение для заданного экстента (в единицах карты) и размера (в пикселях).
Имя Тип Описание extentExtent Экстент.
sizeSize | undefined Размер рамки в пикселях.
Возвращает:
Разрешение, при котором заданный экстент будет отображаться с указанным размером.
-
getResolutionForZoom(zoom){number}
-
Получает разрешение для заданного уровня масштабирования.
Имя Тип Описание zoomnumber Уровень масштабирования.
Возвращает:
Разрешение вида для заданного уровня масштабирования.
-
getResolutions(){Array.<number> | undefined}
-
Получает разрешения для вида. Возвращает массив разрешений, переданный конструктору View, или undefined, если значения не были заданы.
Возвращает:
Разрешения вида.
-
getRevision(){number} унаследовано
-
Получает номер версии объекта. При каждом изменении объекта номер его версии увеличивается.
Возвращает:
Номер ревизии.
-
getRotation(){number}
-
Получить угол поворота вида.
Возвращает:
Угол поворота вида в радианах.
-
getZoom(){number | undefined}
-
Получить текущий уровень масштабирования. Этот метод может возвращать нецелые уровни масштабирования, если вид не ограничивает разрешение или выполняется взаимодействие либо анимация.
Возвращает:
Уровень масштабирования.
-
getZoomForResolution(resolution){number | undefined}
-
Получить уровень масштабирования для заданного разрешения.
Имя Тип Описание resolutionnumber Разрешение.
Возвращает:
Уровень масштабирования для указанного разрешения.
-
on(type, listener){EventsKey | Array<EventsKey>} унаследовано
-
Прослушивать события указанного типа.
Имя Тип Описание typestring | Array.<string> Тип события или массив типов событий.
listenerfunction Функция-обработчик.
Возвращает:
Уникальный ключ для обработчика. Если первым аргументом передан массив типов событий, будет возвращен массив ключей.
-
once(type, listener){EventsKey | Array<EventsKey>} унаследовано
-
Однократно прослушивать события указанного типа.
Имя Тип Описание typestring | Array.<string> Тип события или массив типов событий.
listenerfunction Функция-обработчик.
Возвращает:
Уникальный ключ для обработчика. Если первым аргументом передан массив типов событий, будет возвращен массив ключей.
-
set(key, value, silent) унаследовано
-
Задать значение.
Имя Тип Описание keystring Имя ключа.
value* Значение.
silentboolean | undefined Обновить без вызова события.
-
setCenter(center)
-
Задать центр текущего вида. Применяются все ограничения экстента.
Имя Тип Описание centerCoordinate | undefined Центр вида.
-
setConstrainResolution(enabled)
-
Задать, может ли вид использовать промежуточные уровни масштабирования.
Имя Тип Описание enabledboolean Ограничено ли разрешение.
-
setMaxZoom(zoom)
-
Задать новый максимальный уровень масштабирования для вида.
Имя Тип Описание zoomnumber Максимальный уровень масштабирования.
-
setMinZoom(zoom)
-
Задать новый минимальный уровень масштабирования для вида.
Имя Тип Описание zoomnumber Минимальный уровень масштабирования.
-
setProperties(values, silent) унаследовано
-
Задать набор пар «ключ-значение». Обратите внимание: при этом изменяются существующие свойства и добавляются новые (существующие свойства не удаляются).
Имя Тип Описание valuesPartial.<NoInfer.<Properties>> Значения.
silentboolean | undefined Обновить без вызова события.
-
setResolution(resolution)
-
Задать разрешение для этого вида. Применяются все ограничения разрешения.
Имя Тип Описание resolutionnumber | undefined Разрешение вида.
-
setRotation(rotation)
-
Задать угол поворота для этого вида. Применяются все ограничения угла поворота.
Имя Тип Описание rotationnumber Угол поворота вида в радианах.
-
setZoom(zoom)
-
Установить заданный уровень масштабирования. Применяются все ограничения разрешения.
Имя Тип Описание zoomnumber Уровень масштабирования.
-
un(type, listener) унаследовано
-
Прекратить прослушивание событий указанного типа.
Имя Тип Описание typestring | Array.<string> Тип события или массив типов событий.
listenerfunction Функция-обработчик.
-
unset(key, silent) унаследовано
-
Удалить свойство.
Имя Тип Описание keystring Имя ключа.
silentboolean | 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