Skip to content

Map ​

new Map(container: HTMLElement | string, options: MapOptions)

Если вам не нужен полный контроль над созданием карты — обычно проще EvaMaps.create() — тонкая обёртка над Map + TileLayer с тайлами и темой по умолчанию.

Опции конструктора ​

ОпцияТипПо умолчаниюСтатус
centerLngLatLike— (обязательно)✅
zoomnumber— (обязательно)✅
minZoom, maxZoomnumber0, 22✅
zoomSnapnumber1✅ В покое зум кратен zoomSnap (0 — без привязки, дробный зум). Во время жеста (пальцы, трекпад) зум всегда дробный
zoomControlbooleantrue✅
scaleControlbooleantrue✅
cooperativebooleanfalse✅ Колесо мыши масштабирует карту только с Ctrl/⌘; на тач-экране один палец листает страницу, два пальца двигают карту
cooperativeHintTextstring«Для масштабирования используйте Ctrl + колесо»✅ Подсказка, которая на миг появляется при игнорируемом жесте
maxBoundsLngLatBoundsLike—⏳
keyboardbooleantrue✅ Стрелки и +/− двигают и зумят карту; фокус — по клику на карту или через Tab
doubleClickZoombooleantrue✅ Зум по двойному клику/тапу. Можно выключить и на лету — setDoubleClickZoom(false)

Методы — вид карты ​

МетодВозвращаетСтатус
getCenter()LngLat✅
getZoom()number✅
getBounds()LngLatBounds✅Видимая область
setView(center, zoom)this✅Мгновенно, без анимации
setZoom(zoom, { animate? })this✅
zoomIn() / zoomOut()this✅Плавно, на 1 уровень вокруг центра
panTo(center, { animate? })this✅
panBy(dx, dy)this✅Сдвиг в пикселях экрана
flyTo(center, zoom, { duration? })this✅Плавный перелёт; при системной настройке prefers-reduced-motion — мгновенно, без анимации
fitBounds(bounds, { padding?, maxZoom? })this✅Корректно работает через 180° долготы (например, для Чукотки)
project(lngLat) / unproject(point)Point / LngLat✅Пиксели контейнера карты ↔ географические координаты. У антимеридиана (180°, Чукотка) project() берёт ближайшую к центру карты точку, а не противоположный край мира
getContainer()HTMLElement✅
setDoubleClickZoom(enabled) / getDoubleClickZoom()this / boolean✅Включает/выключает зум по двойному клику на лету
destroy()void✅Снимает всё: слушатели событий, DOM-узлы, таймеры, незавершённые загрузки тайлов

Методы — слои и события ​

МетодСтатус
add(layer) / remove(layer)✅
on(type, fn) / off(type, fn) / once(type, fn)✅

Полный список слоёв — в разделе «Слои», список событий — в «События».

События карты ​

СобытиеДанныеСтатус
load—✅ Первые тайлы видимой области загружены
click, dblclick, contextmenu{ lngLat, point, originalEvent }✅
movestart, move, moveend—✅
zoomstart, zoom, zoomend—✅
resize{ width, height }✅

Пример ​

ts
import { Map, TileLayer, Marker, Popup } from '@evamaps/sdk';

const map = new Map('map', {
  center: [37.6173, 55.7558],
  zoom: 12,
  cooperative: true,
});

map.add(
  new TileLayer({ url: 'https://evamaps.ru/v1/light/{z}/{x}/{y}{r}.png' }),
);

new Marker([37.6173, 55.7558])
  .setPopup(new Popup().setText('Наш офис'))
  .addTo(map);

map.on('moveend', () => {
  console.log(map.getCenter(), map.getZoom());
});

// при удалении страницы/компонента
map.destroy();

Нашли ошибку в документации? Напишите нам