ol/View~Вид
import View from 'ol/View.js';
Объект View представляет собой простой 2D-вид карты.
Это объект, с помощью которого изменяется центр, разрешение и поворот карты.
У View есть projection. Проекция определяет систему координат центра, а единицы определяют единицы разрешения (единицы проекции на пиксель). По умолчанию используется проекция Web Mercator (EPSG:3857).
Состояния вида
Вид определяется тремя состояниями: center, resolution и rotation. Каждое состояние имеет соответствующий метод получения и установки, например, getCenter и setCenter для состояния center.
Состояние zoom фактически не сохраняется в виде: все вычисления внутри используют состояние resolution. Тем не менее, доступны методы setZoom и getZoom, а также getResolutionForZoom и getZoomForResolution для переключения между системами.
Ограничения
setCenter, setResolution и setRotation можно использовать для изменения состояний вида, но любые ограничения, определенные в конструкторе, будут применяться по ходу дела.
Объект View может иметь ограничение по разрешению, ограничение по повороту и ограничение по центру.
Ограничение по разрешению обычно ограничивает минимальные/максимальные значения и подстраивается под определенные значения разрешения. Оно определяется следующими параметрами: resolutions, maxResolution, maxZoom и zoomFactor. Если resolutions задан, остальные три параметра игнорируются. Более подробную информацию см. в документации для каждого параметра. По умолчанию вид имеет только ограничения min/max и разрешает промежуточные уровни масштабирования, например, при масштабировании пинцетом.
Ограничение по повороту подстраивается под определенные углы. Оно определяется следующими параметрами: enableRotation и constrainRotation. По умолчанию поворот разрешен, и его значение подстраивается к нулю при приближении к горизонтали.
Ограничение по центру определяется параметром extent. По умолчанию центр вида не ограничен.
Изменение состояния вида
Важно отметить, что setZoom, setResolution, setCenter и setRotation подчиняются вышеупомянутым ограничениям. Таким образом, иногда заранее неизвестно конечное состояние View. Например, вызов setResolution(10) не гарантирует, что getResolution() вернет 10.
Следствием этого является то, что при применении дельты к состоянию вида следует использовать adjustCenter, adjustRotation, adjustZoom и adjustResolution вместо соответствующих методов установки. Это позволит виду выполнить внутренние вычисления. Кроме того, методы adjust* также принимают аргумент anchor, который позволяет указать источник преобразования.
Взаимодействие с видом
Ограничения вида обычно применяются только тогда, когда вид находится в состоянии покоя, то есть никакое взаимодействие или анимация не происходит. Таким образом, если пользователь устанавливает вид в состояние, которое не эквивалентно ограниченному (например, поворачивает вид, когда угол фиксации равен 0), при завершении взаимодействия будет запущена анимация, чтобы вернуть вид в стабильное состояние;
-
новый View(параметры)
-
Имя Тип Описание centerКоордината | undefined Начальная центральная точка представления. Если пользовательская проекция не задана, система координат центра задается с помощью параметра
projection. Источники слоев не будут загружаться, если этот параметр не задан, но центр можно установить позже с помощью#setCenter.constrainRotationboolean | number (по умолчанию true) Ограничение по повороту.
falseозначает отсутствие ограничения.trueозначает отсутствие ограничения, но привязка к нулю вблизи нуля. Числовое значение ограничивает поворот заданным числом значений. Например,4ограничит поворот до 0, 90, 180 и 270 градусов.enableRotationboolean (по умолчанию true) Разрешить поворот. Если
false, используется ограничение поворота, которое всегда устанавливает поворот в ноль. ПараметрconstrainRotationне имеет эффекта, еслиenableRotationравенfalse.extentОбласть | undefined Область, ограничивающая представление, другими словами, ничего за пределами этой области не будет видно на карте.
constrainOnlyCenterboolean (по умолчанию false) Если true, ограничение по области будет применяться только к центру представления, а не к всей области.
smoothExtentConstraintboolean (по умолчанию true) Если true, ограничение по области будет применено плавно, т.е. позволить представлению немного выходить за пределы заданной области
extent.maxResolutionnumber | undefined Максимальное разрешение, используемое для определения ограничения по разрешению. Оно используется вместе с
minResolution(илиmaxZoom) иzoomFactor. Если не указано, оно вычисляется таким образом, чтобы область валидности проекции умещалась в плитке 256x256 пикселей. Если проекция — это сферический Меркатор (по умолчанию), тоmaxResolutionпо умолчанию равно40075016.68557849 / 256 = 156543.03392804097.minResolutionnumber | undefined Минимальное разрешение, используемое для определения ограничения по разрешению. Оно используется вместе с
maxResolution(илиminZoom) иzoomFactor. Если не указано, оно вычисляется, предполагая 29 уровней масштабирования (с множителем 2). Если проекция — это сферический Меркатор (по умолчанию), то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, пользователь сможет уменьшить масштаб так, что область просмотра превысит высоту или ширину настроенной области, но не обе, что позволит отобразить всю область.
projectionПроекция (по умолчанию 'EPSG:3857') Проекция. По умолчанию — сферический Меркатор.
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 | число | undefined | да | change:resolution | Разрешение вида. |
rotation | число | да | change:rotation | Поворот вида в радианах. |
Члены
-
padding{Массив.<число>} {undefined}
-
Отступ (в пикселях CSS). Если область просмотра карты частично перекрыта другим содержимым (наложениями) по краям, это значение позволяет сместить центр области просмотра от этого содержимого. Порядок значений в массиве — верх, правая сторона, низ, левая сторона. По умолчанию отступ отсутствует, что эквивалентно
[0, 0, 0, 0].
Методы
-
adjustCenter(deltaCoordinates)
-
Добавляет относительные координаты к центру представления. Любые ограничения по области применения.
Имя Тип Описание deltaCoordinatesКоордината Относительное значение для добавления.
-
adjustResolution(ratio, anchor)
-
Умножает разрешение представления на коэффициент, необязательно используя якорную точку. Применяются любые ограничения по разрешению.
Имя Тип Описание ratioчисло Коэффициент, применяемый к разрешению представления.
anchorКоордината | undefined Начальная точка преобразования.
-
adjustRotation(delta, anchor)
-
Добавляет значение к повороту представления, необязательно используя якорную точку. Применяются любые ограничения по повороту.
Имя Тип Описание deltaчисло Относительное значение для добавления к повороту масштабирования, в радианах.
anchorКоордината | undefined Центр вращения.
-
adjustZoom(delta, anchor)
-
Добавляет значение к уровню масштабирования представления, необязательно используя якорную точку. Применяются любые ограничения по разрешению.
Имя Тип Описание deltaчисло Относительное значение для добавления к уровню масштабирования.
anchorКоордината | 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Параметры анимации. Несколько анимаций могут быть выполнены последовательно, передав несколько объектов параметров. Для выполнения нескольких анимаций параллельно, вызовите метод несколько раз. В качестве дополнительного аргумента можно указать обратный вызов. Обратный вызов будет вызван с логическим значением, указывающим, завершила ли анимация работу без отмены.
Имя Тип Описание centerКоордината | undefined Центр представления в конце анимации.
zoomчисло | undefined Уровень масштабирования представления в конце анимации. Это имеет приоритет над
resolution.resolutionчисло | undefined Разрешение представления в конце анимации. Если также указано
zoom, этот параметр будет проигнорирован.rotationчисло | undefined Поворот представления в конце анимации.
anchorКоордината | undefined Необязательная якорная точка, которая остается фиксированной во время анимации поворота или разрешения.
durationчисло (по умолчанию 1000) Длительность анимации в миллисекундах.
easingфункция | undefined Функция плавности, используемая во время анимации (по умолчанию
inAndOut). Функция вызывается для каждой кадра с числом, представляющим долю длительности анимации. Функция должна возвращать число от 0 до 1, представляющее прогресс к целевому состоянию. -
beginInteraction()
-
Уведомляет представление о начале взаимодействия. Состояние представления будет разрешено до стабильного, если это необходимо (в зависимости от его ограничений).
-
calculateExtent(size){Граница}
-
Вычисляет границу для текущего состояния представления и переданного размера области.
Имя Тип Описание sizeРазмер | undefined Размеры пикселей области, в которую должна вписаться вычисленная граница. По умолчанию используется размер карты, с которой связано представление. Если к представлению подключена карта или несколько карт, укажите желаемый размер области (например,
map.getSize()).Возвращает:
Граница.
-
cancelAnimations()
-
Отменить любые текущие анимации.
-
centerOn(coordinate, size, position)
-
Центрирование по координатам и позиции просмотра.
Имя Тип Описание coordinateКоордината Координата.
sizeРазмер Размер области в пикселях.
positionПиксель Позиция просмотра для центрирования.
-
changed() унаследованно
-
Увеличивает счетчик ревизий и отправляет событие 'change'.
-
dispatchEvent(event){boolean | undefined} унаследованно
-
Отправляет событие и вызывает всех слушателей, ожидающих события этого типа. Параметр события может быть строкой или объектом с свойством
type.Имя Тип Описание eventBaseEvent | строка Объект события.
Возвращает:
false, если кто-то вызвал preventDefault на объекте события или если какой-либо из слушателей вернул false.
-
endInteraction(duration, resolutionDirection, anchor)
-
Уведомляет просмотр, что взаимодействие завершено. Состояние просмотра будет решено до стабильного, если необходимо (в зависимости от ограничений).
Имя Тип Описание durationчисло | undefined Продолжительность анимации в мс.
resolutionDirectionчисло | undefined Направление масштабирования.
anchorКоордината | undefined Начальная точка преобразования.
-
fit(geometryOrExtent, options)
-
Приспосабливает указанную геометрию или область к заданному размеру карты и границе. Размер — это пиксельные размеры области, в которую нужно поместить область. В большинстве случаев вы хотите использовать размер карты, то есть
map.getSize(). Учитывает угол карты.Имя Тип Описание geometryOrExtentПростаяГеометрия | Область Геометрия или область, к которой нужно приспособить просмотр.
optionsПараметры.
Имя Тип Описание sizeРазмер | undefined Размер области в пикселях, в которую нужно поместить область. По умолчанию совпадает с размером карты, с которой связан просмотр. Если к просмотру подключена ни одна, ни несколько карт, укажите желаемый размер области (например,
map.getSize()).paddingМассив.<число> (по умолчанию [0, 0, 0, 0]) Отступ (в пикселях) для очистки внутри просмотра. Значения в массиве — отступ сверху, справа, снизу и слева.
nearestлогическое значение (по умолчанию false) Если параметр просмотра
constrainResolutionимеет значениеtrue, найдите ближайшую область, а не самую близкую, которая фактически подходит для просмотра.minResolutionчисло (по умолчанию 0) Минимальное разрешение, к которому мы масштабируем.
maxZoomчисло | undefined Максимальный уровень масштабирования, к которому мы масштабируем. Если указан
minResolution, это свойство игнорируется.durationчисло | undefined Продолжительность анимации в миллисекундах. По умолчанию анимация до целевой области отсутствует.
easingфункция | undefined Функция плавного изменения, используемая во время анимации (по умолчанию
inAndOut). Функция вызывается для каждого кадра с числом, представляющим долю продолжительности анимации. Функция должна возвращать число от 0 до 1, представляющее прогресс по направлению к целевому состоянию.callbackфункция | undefined Функция, вызываемая, когда просмотр находится в конечном положении. Функция вызывается с
true, если анимационный ряд завершен самостоятельно, или сfalse, если он был прерван. -
get(key){*} унаследованно
-
Получение значения.
Имя Тип Описание keyстрока Имя ключа.
Возвращает:
Значение.
-
getAnimating(){boolean}
-
Определение, анимируется ли просмотр.
Возвращает:
Просмотр анимируется.
-
getCenter(){Координата | undefined}
-
Получение центра просмотра.
Возвращает:
Центр просмотра.
-
getInteracting(){boolean}
-
Определение, взаимодействует ли пользователь с просмотром, например, перемещает или масштабирует.
Возвращает:
Взаимодействие с просмотром.
-
Получить список имён свойств объекта.
Возвращаемое значение:
Список имён свойств.
-
Получить максимальное разрешение представления.
Возвращаемое значение:
Максимальное разрешение представления.
-
Получить максимальный уровень масштабирования для представления.
Возвращаемое значение:
Максимальный уровень масштабирования.
-
Получить минимальное разрешение представления.
Возвращаемое значение:
Минимальное разрешение представления.
-
Получить минимальный уровень масштабирования для представления.
Возвращаемое значение:
Минимальный уровень масштабирования.
-
getProjection(){Projection}
-
Получить проекцию представления.
Возвращаемое значение:
Проекция представления.
-
Получить объект со всеми именами свойств и значениями.
Возвращаемое значение:
Объект.
-
Получить разрешение представления.
Возвращаемое значение:
Разрешение представления.
-
Получить разрешение для заданного охвата (в единицах карты) и размера (в пикселях).
Имя Тип Описание extentExtent Охват.
sizeSize | undefined Размер области в пикселях.
Возвращаемое значение:
Разрешение, при котором указанный охват будет отображаться заданного размера.
-
Получить разрешение для уровня масштабирования.
Имя Тип Описание zoomnumber Уровень масштабирования.
Возвращаемое значение:
Разрешение представления для заданного уровня масштабирования.
-
Получить разрешения для представления. Возвращает массив разрешений, переданных в конструктор представления, или undefined, если они не были заданы.
Возвращаемое значение:
Разрешения представления.
-
getRevision(){number} inherited
-
Получить номер версии этого объекта. Каждый раз, когда объект изменяется, его номер версии увеличивается.
Возвращаемое значение:
Номер версии.
-
Получить поворот представления.
Возвращаемое значение:
Поворот представления в радианах.
-
Получить текущий уровень масштабирования. Этот метод может возвращать нецелые значения уровня масштабирования, если представление не ограничивает разрешение или если выполняется взаимодействие или анимация.
Возвращаемое значение:
Уровень масштабирования.
-
Получить уровень масштабирования для разрешения.
Имя Тип Описание resolutionnumber Разрешение.
Возвращаемое значение:
Уровень масштабирования для указанного разрешения.
-
Прослушивание события определенного типа.
Имя Тип Описание typeстрока | Массив.<строка> Тип события или массив типов событий.
listenerфункция Функция-обработчик.
Возвращает:
Уникальный ключ для обработчика. Если вызов выполнен с массивом типов событий в качестве первого аргумента, возвращаемое значение будет массивом ключей.
-
once(type, listener){EventsKey | Array<EventsKey>} унаследованный
-
Прослушивание события определенного типа один раз.
Имя Тип Описание typeстрока | Массив.<строка> Тип события или массив типов событий.
listenerфункция Функция-обработчик.
Возвращает:
Уникальный ключ для обработчика. Если вызов выполнен с массивом типов событий в качестве первого аргумента, возвращаемое значение будет массивом ключей.
-
set(key, value, silent) унаследованный
-
Устанавливает значение.
Имя Тип Описание keyстрока Имя ключа.
value* Значение.
silentлогическое | undefined Обновить без запуска события.
-
setCenter(center)
-
Устанавливает центр текущего вида. Любые ограничения по области применения.
Имя Тип Описание centerКоордината | undefined Центр вида.
-
setConstrainResolution(enabled)
-
Устанавливает, следует ли виду разрешать промежуточные уровни масштабирования.
Имя Тип Описание enabledлогическое Ограничивается ли разрешение.
-
setMaxZoom(zoom)
-
Устанавливает новый максимальный уровень масштабирования для вида.
Имя Тип Описание zoomчисло Максимальный уровень масштабирования.
-
setMinZoom(zoom)
-
Устанавливает новый минимальный уровень масштабирования для вида.
Имя Тип Описание zoomчисло Минимальный уровень масштабирования.
-
setProperties(values, silent) унаследованный
-
Устанавливает коллекцию пар ключ-значение. Обратите внимание, что это изменяет любые существующие свойства и добавляет новые (это не удаляет какие-либо существующие свойства).
Имя Тип Описание valuesОбъект.<строка, *> Значения.
silentлогическое | undefined Обновить без запуска события.
-
setResolution(resolution)
-
Устанавливает разрешение для этого вида. Любые ограничения по разрешению применяются.
Имя Тип Описание resolutionчисло | undefined Разрешение вида.
-
setRotation(rotation)
-
Устанавливает поворот для этого вида. Любые ограничения по повороту применяются.
Имя Тип Описание rotationчисло Поворот вида в радианах.
-
setZoom(zoom)
-
Масштабирование до определенного уровня масштабирования. Любые ограничения по разрешению применяются.
Имя Тип Описание zoomчисло Уровень масштабирования.
-
un(type, listener) унаследованный
-
Отписаться от определенного типа события.
Имя Тип Описание typeстрока | Массив.<строка> Тип события или массив типов событий.
listenerфункция Функция-обработчик.
-
unset(ключ, безмолвный) унаследованный
-
Удаляет свойство.
Имя Тип Описание keyстрока Имя ключа.
silentлогическое | 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