ol/Map~Карта
import Map from 'ol/Map.js';
Карта является основным компонентом OpenLayers. Для отображения карты необходимы: представление, один или несколько слоев и целевой контейнер:
import Map from 'ol/Map.js';
import View from 'ol/View.js';
import TileLayer from 'ol/layer/Tile.js';
import OSM from 'ol/source/OSM.js';
const map = new Map({
view: new View({
center: [0, 0],
zoom: 1,
}),
layers: [
new TileLayer({
source: new OSM(),
}),
],
target: 'map',
});
В приведенном выше фрагменте кода создается карта с использованием TileLayer для отображения данных OSM OSM и их отображения в элементе DOM с id map.
Конструктор помещает контейнер просмотра (с именем класса CSS ol-viewport) в целевой элемент (см. getViewport()), а затем еще два элемента внутри просмотра: один с именем класса CSS ol-overlaycontainer-stopevent для элементов управления и некоторых наложений, и один с именем класса CSS ol-overlaycontainer для других наложений (см. опцию stopEvent Overlay для различий). Сама карта размещается в дополнительном элементе внутри просмотра.
Слои хранятся как Collection в группах слоев. Библиотека предоставляет верхнюю группу. К ней обращаются с помощью getLayerGroup и setLayerGroup. Слои, указанные в параметрах, добавляются в эту группу, а addLayer и removeLayer изменяют коллекцию слоев в группе. getLayers - это удобная функция для getLayerGroup().getLayers(). Обратите внимание, что LayerGroup является подклассом BaseLayer, поэтому слои, указанные в параметрах или добавленные с помощью addLayer, могут быть группами, которые могут содержать другие группы и так далее.
-
Имя Тип Описание controlsКоллекция<Контроль> | Массив<Контроль> | undefined Контролы, первоначально добавленные на карту. Если не указано, используется
defaults.pixelRatioчисло (по умолчанию window.devicePixelRatio) Соотношение между физическими пикселями и пикселями независимыми от устройства (dips) на устройстве.
interactionsКоллекция<Взаимодействие> | Массив<Взаимодействие> | undefined Взаимодействия, которые первоначально добавляются на карту. Если не указано, используется
defaults.keyboardEventTargetHTMLElement | Document | строка | undefined Элемент, на который следует прослушивать события клавиатуры. Это определяет, когда срабатывают взаимодействия
KeyboardPanиKeyboardZoom. Например, если этот параметр установлен наdocument, взаимодействия с клавиатурой всегда будут срабатывать. Если этот параметр не указан, элементом, на котором библиотека прослушивает события клавиатуры, является целевой элемент карты (т.е. предоставленный пользователем div для карты). Если это неdocument, целевой элемент должен быть сфокусирован для того, чтобы события клавиш были выпущены, что требует, чтобы у целевого элемента был атрибутtabindex.layersМассив<БазовыйСлой> | Коллекция<БазовыйСлой> | ГруппаСлоёв | undefined Слои. Если это не определено, будет отображена карта без слоёв. Обратите внимание, что слои отображаются в порядке предоставления, поэтому, если вы хотите, например, чтобы векторный слой отображался поверх плисового слоя, он должен следовать за плисовым слоем.
maxTilesLoadingчисло (по умолчанию 16) Максимальное количество одновременно загружаемых плиток.
moveToleranceчисло (по умолчанию 1) Минимальное расстояние в пикселях, на которое должен перемещаться курсор, чтобы быть распознанным как событие перемещения карты, а не нажатия. Увеличение этого значения может облегчить нажатие на карту.
overlaysКоллекция<Наложение> | Массив<Наложение> | undefined Наложения, первоначально добавленные на карту. По умолчанию наложения не добавляются.
targetHTMLElement | строка | undefined Контейнер для карты, либо сам элемент, либо
idэлемента. Если при создании не указано, необходимо вызватьsetTargetдля отображения карты. Если передаётся элемент, контейнер может находиться во вторичном документе. Для обеспечения доступности (фокусировки и событий клавиатуры для навигации по карте), у элементаtargetдолжен быть должным образом настроен атрибутtabindex. Если элементtargetнаходится внутри Shadow DOM, атрибутtabindexдолжен быть задан на элементе-хосте пользовательского элемента. Примечание: Поддержка CSStransformдля целевого элемента ограниченаscale.viewВид | Promise<ViewOptions> | undefined Вид карты. Источники слоёв не будут извлечены, если это не указано при создании или через
setView.Вызывает:
-
change(BaseEvent) - Общее событие изменения. Срабатывает, когда счётчик ревизии увеличивается. -
change:layerGroup(ObjectEvent) -
change:size(ObjectEvent) -
change:target(ObjectEvent) -
change:view(ObjectEvent) -
click(MapBrowserEvent) - Нажатие без перетаскивания. Двойное нажатие вызовет два из этих событий. -
dblclick(MapBrowserEvent) - Истинное двойное нажатие без перетаскивания. -
error(BaseEvent) - Общее событие об ошибке. Срабатывает при возникновении ошибки. -
loadend(MapEvent) - Срабатывает при завершении загрузки дополнительных данных карты. -
loadstart(MapEvent) - Срабатывает при начале загрузки дополнительных данных карты (плитки, изображения, объекты). -
moveend(MapEvent) - Срабатывает после перемещения карты. -
movestart(MapEvent) - Срабатывает, когда карта начинает перемещаться. -
pointerdrag(MapBrowserEvent) - Срабатывает при перетаскивании указателя. -
pointermove(MapBrowserEvent) - Срабатывает при перемещении указателя. Обратите внимание, что на сенсорных устройствах это срабатывает при перемещении карты, поэтому это не то же самое, что mousemove. -
postcompose(RenderEvent) - Срабатывает после композиции слоёв. При отправке события с карты объект события не будет иметь установленного контекста. При отправке события слоем объект события будет иметь установленный контекст. В настоящее время это событие отправляют только слои WebGL. -
postrender(MapEvent) - Срабатывает после отрисовки кадра карты. -
precompose(RenderEvent) - Срабатывает перед композицией слоёв. При отправке события с карты объект события не будет иметь установленного контекста. При отправке события слоем объект события будет иметь установленный контекст. В настоящее время это событие отправляют только слои WebGL. -
propertychange(ObjectEvent) - Срабатывает при изменении свойства. -
rendercomplete(RenderEvent) - Срабатывает после завершения отрисовки, т.е. все источники и плитки завершили загрузку для текущего представления, и все плитки выведены с затуханием. Объект события не будет иметь установленного контекста. -
singleclick(MapBrowserEvent) - Истинное одиночное нажатие без перетаскивания и без двойного нажатия. Обратите внимание, что это событие отложено на 250 мс, чтобы гарантировать, что это не двойное нажатие.
-
Расширения
Наблюдаемые свойства
| Имя | Тип | Устанавливаемое | Тип события | Описание |
|---|---|---|---|---|
layerGroup | ГруппаСлоёв | да | change:layergroup | Группа слоёв, содержащая слои в этой карте. |
size | Размер | undefined | да | change:size | Размер карты в пикселях в DOM. |
target | HTMLElement | строка | undefined | да | change:target | Элемент или id элемента, в котором отображается карта. |
view | Вид | да | change:view | Вид, контролирующий эту карту. |
Методы
-
addControl(control)
-
Добавить заданный инструмент управления на карту.
Имя Тип Описание controlИнструмент управления Инструмент управления.
-
addInteraction(interaction)
-
Добавить заданное взаимодействие на карту. Если вы хотите добавить взаимодействие в другое место коллекции, используйте
getInteractions()и доступные методы вCollection. Это можно использовать для остановки распространения события из функции handleEvent. Взаимодействия обрабатывают события в обратном порядке этой коллекции.Имя Тип Описание interactionВзаимодействие Добавляемое взаимодействие.
-
addLayer(layer)
-
Добавляет заданный слой в верхнюю часть этой карты. Если вы хотите добавить слой в другое место стека, используйте
getLayers()и доступные методы вCollection.Имя Тип Описание layerБазовый слой Слой.
-
addOverlay(overlay)
-
Добавить задатый наложение на карту.
Имя Тип Описание overlayНаложение Наложение.
-
changed() унаследованный
-
Увеличивает счётчик ревизий и отправляет событие 'change'.
-
dispatchEvent(event){boolean | undefined} унаследованный
-
Отправляет событие и вызывает всех слушателей, подписканных на события этого типа. Параметр event может быть строкой или объектом с свойством
type.Имя Тип Описание eventОсновное событие | строка Объект события.
Возвращаемое значение:
false, если кто-то вызвал preventDefault на объекте события или любой из слушателей вернул false.
-
forEachFeatureAtPixel(pixel, callback, options){T | undefined}
-
Обнаружение объектов, которые пересекают пиксель на представлении, и выполнение обратного вызова для каждого пересекающего объекта. Слои, включённые в обнаружение, могут быть настроены через параметр
layerFilterвoptions.Имя Тип Описание pixelПиксель Пиксель.
callbackфункция Обратный вызов объекта. Обратный вызов будет вызван с двумя аргументами. Первый аргумент — один
featureилиrender featureв пикселе, второй —layerобъекта и будет null для слоёв без управления. Для остановки обнаружения функции обратного вызова могут возвращать истинное значение.optionsДополнительные опции.
Имя Тип Описание layerFilterundefined | функция Функция фильтра слоёв. Функция фильтра примет один аргумент —
layer-candidate, и она должна вернуть логическое значение. Будут проверены только видимые слои, для которых эта функция возвращаетtrue. По умолчанию будут проверены все видимые слои.hitToleranceчисло (по умолчанию 0) Допуск обнаружения по пикселям CSS. Пиксели внутри радиуса вокруг заданной позиции будут проверены на наличие объектов.
checkWrappedлогическое значение (по умолчанию true) Проверка обернутых объектов. Будет проверять обернутые геометрии в диапазоне +/- 1 ширины мира. Работает только если используется проекция, которую можно обернуть.
Возвращаемое значение:
Результат обратного вызова, т. е. возвращаемое значение последнего вызова обратного вызова или первое истинное значение возврата обратного вызова.
-
get(key){*} унаследованный
-
Получение значения.
Имя Тип Описание keyстрока Имя ключа.
Возвращаемое значение:
Значение.
-
getAllLayers(){Array<Слой>}
-
Получение всех слоёв из всех групп слоёв.
Возвращаемое значение:
Слои.
-
getControls(){Коллекция<Инструмента управления>}
-
Получение инструментов управления карты. Изменение этой коллекции изменяет инструменты, связанные с картой.
Возвращаемое значение:
Инструменты управления.
-
getCoordinateFromPixel(pixel){Coordinate}
-
Получить координаты для заданного пикселя. Возвращает координаты в пользовательской проекции.
Name Type Description pixelPixel Позиция пикселя в окне просмотра карты.
Returns:
Координата для позиции пикселя.
-
getEventCoordinate(event){Coordinate}
-
Возвращает координаты в пользовательской проекции для события браузера.
Name Type Description eventMouseEvent Событие.
Returns:
Координата.
-
Возвращает позицию пикселя карты для события браузера относительно области просмотра.
Name Type Description eventUIEvent | Object Событие.
Returns:
Пиксель.
-
getFeaturesAtPixel(pixel, options){Array<FeatureLike>}
-
Получить все объекты, пересекающие пиксель в окне просмотра.
Name Type Description pixelPixel Пиксель.
optionsНеобязательные параметры.
Name Type Description layerFilterundefined | function Функция фильтрации слоев. Функция фильтрации получит один аргумент,
layer-candidate, и должна вернуть логическое значение. Только видимые слои, для которых эта функция возвращаетtrue, будут проверены на наличие объектов. По умолчанию будут проверены все видимые слои.hitTolerancenumber (defaults to 0) Допуск обнаружения попадания в пикселях css. Пиксели внутри радиуса вокруг заданной позиции будут проверены на наличие объектов.
checkWrappedboolean (defaults to true) Проверка на обертывание. Будет проверять на обернутые геометрии в диапазоне +/- 1 ширина мира. Работает только если используется проекция, которая может быть обернута.
Returns:
Обнаруженные объекты или пустой массив, если объекты не найдены.
-
getInteractions(){Collection<Interaction>}
-
Получить взаимодействия карты. Изменение этой коллекции изменяет взаимодействия, связанные с картой.
Взаимодействия используются, например, для панорамирования, масштабирования и вращения.
Returns:
Взаимодействия.
-
Получить список имен свойств объекта.
Returns:
Список имен свойств.
-
getLayerGroup(){LayerGroup}
-
Получить группу слоев, связанную с этой картой.
Returns:
Группа слоев, содержащая слои на этой карте.
-
getLayers(){Collection<BaseLayer>}
-
Получить коллекцию слоев, связанных с этой картой.
Returns:
Слои.
-
Получить оверлей по его идентификатору (значение, возвращаемое overlay.getId()). Обратите внимание, что индекс рассматривает строковые и числовые идентификаторы как одинаковые. Поэтому
map.getOverlayById(2)вернет оверлей с id'2'или2.Name Type Description idstring | number Идентификатор оверлея.
Returns:
Оверлей.
-
getOverlays(){Collection<Overlay>}
-
Получить оверлеи карты. Изменение этой коллекции изменяет оверлеи, связанные с картой.
Returns:
Оверлеи.
-
Получить пиксель для координаты. Эта функция принимает координаты в пользовательской проекции и возвращает соответствующий пиксель.
Name Type Description coordinateCoordinate Координата карты.
Returns:
Позиция пикселя в окне просмотра карты.
-
Получить объект со всеми именами и значениями свойств.
Возвращает:
Объект.
-
getRevision(){number} inherited
-
Получить номер версии этого объекта. Каждый раз, когда объект изменяется, его номер версии увеличивается.
Возвращает:
Версия.
-
Получить размер этой карты.
Возвращает:
Размер карты в пикселях в DOM.
-
Получить целевой элемент, в котором отображается эта карта. Обратите внимание, что это возвращает то, что введено в качестве опции или в setTarget: если это был элемент, он возвращает элемент; если строка, он возвращает ее.
Возвращает:
Элемент или идентификатор элемента, в котором отображается карта.
-
Получить DOM-элемент, в который отображается эта карта. В отличие от
getTarget, этот метод всегда возвращаетElement, илиnull, если у карты нет целевого элемента.Возвращает:
Элемент, в который отображается карта.
-
Получить представление, связанное с этой картой. Представление управляет такими свойствами, как центр и разрешение.
Возвращает:
Представление, которое контролирует эту карту.
-
Получить элемент, используемый в качестве области просмотра карты.
Возвращает:
Область просмотра.
-
Определяет, пересекают ли объекты пиксель в области просмотра. Слои, включенные в обнаружение, можно настроить с помощью опции
layerFilter.Имя Тип Описание pixelPixel Пиксель.
optionsНеобязательные опции.
Имя Тип Описание layerFilterundefined | function Функция фильтра слоев. Функция фильтра получит один аргумент,
layer-candidate, и должна вернуть логическое значение. Только видимые слои, для которых эта функция возвращает значениеtrue, будут проверены на наличие объектов. По умолчанию будут проверены все видимые слои.hitTolerancenumber (по умолчанию 0) Допуск обнаружения по нажатию в пикселях CSS. Пиксели в радиусе вокруг заданной позиции будут проверены на наличие объектов.
checkWrappedboolean (по умолчанию true) Проверка перехода. Будет проверять перекрывающиеся геометрии в диапазоне +/- 1 ширина мира. Работает только если используется проекция, которая может быть обернута.
Возвращает:
Есть ли объект в заданном пикселе?
-
Прослушивание определенного типа события.
Имя Тип Описание typestring | Array.<string> Тип события или массив типов событий.
listenerfunction Функция-обработчик.
Возвращает:
Уникальный ключ для обработчика. Если вызван с массивом типов событий в качестве первого аргумента, возвращаемое значение будет массивом ключей.
-
Прослушивание определенного типа события один раз.
Имя Тип Описание typestring | Array.<string> Тип события или массив типов событий.
listenerfunction Функция-обработчик.
Возвращает:
Уникальный ключ для обработчика. Если вызван с массивом типов событий в качестве первого аргумента, возвращаемое значение будет массивом ключей.
-
Удалить заданный элемент управления с карты.
Имя Тип Описание controlControl Элемент управления.
Возвращает:
Удаленный элемент управления (или undefined, если элемент управления не найден).
-
removeInteraction(interaction){Interaction | undefined}
-
Удалить заданное взаимодействие с карты.
Имя Тип Описание interactionInteraction Взаимодействие для удаления.
Возвращаемое значение:
Удаленное взаимодействие (или undefined, если взаимодействие не найдено).
-
Удаляет заданный слой с карты.
Имя Тип Описание layerBaseLayer Слой.
Возвращаемое значение:
Удаленный слой (или undefined, если слой не найден).
-
Удалить заданный слой наложения с карты.
Имя Тип Описание overlayOverlay Наложение.
Возвращаемое значение:
Удаленное наложение (или undefined, если наложение не найдено).
-
Запросить отрисовку карты (в следующий кадр анимации).
-
Запрос немедленной отрисовки в синхронном режиме.
-
Устанавливает значение.
Имя Тип Описание keystring Имя ключа.
value* Значение.
silentboolean | undefined Обновление без срабатывания события.
-
Устанавливает группу слоёв для этой карты.
Имя Тип Описание layerGroupLayerGroup Группа слоёв, содержащая слои на этой карте.
-
Очистить все существующие слои и добавить слои на карту.
Имя Тип Описание layersArray<BaseLayer> | Collection<BaseLayer> Слои, которые нужно добавить на карту.
-
Устанавливает коллекцию пар ключ-значение. Обратите внимание, что это изменяет любые существующие свойства и добавляет новые (это не удаляет какие-либо существующие свойства).
Имя Тип Описание valuesObject.<string, *> Значения.
silentboolean | undefined Обновление без срабатывания события.
-
Установить размер этой карты.
Имя Тип Описание sizeSize | undefined Размер карты в пикселях в DOM.
-
Установить целевой элемент для отрисовки этой карты. Для доступности (фокусировка и события клавиатуры для навигации по карте), элемент
targetдолжен иметь правильно настроенный атрибутtabindex. Если элементtargetнаходится внутри Shadow DOM, атрибутtabindexдолжен быть установлен на элементе-хосте пользовательского элемента.Имя Тип Описание targetHTMLElement | string | undefined Элемент или id элемента, в котором отображается карта.
-
Установить представление для этой карты.
Имя Тип Описание viewView | Promise<ViewOptions> Представление, которое управляет этой картой. Также можно передать промис, который возвращает опции для создания представления. Эта альтернатива позволяет свойствам представления быть разрешенными источниками или другими компонентами, которые загружают метаданные, относящиеся к представлению.
-
un(type, listener) inherited
-
Отписаться от определенного типа события.
Имя Тип Описание typestring | Array.<string> Тип события или массив типов событий.
listenerfunction Функция-обработчик.
-
Сбросить свойство.
Имя Тип Описание 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_Map-Map.html