Миграция с версии 1.x
Важно
Перед прочтением данного раздела выполните шаги из общих принципов перехода.
Содержимое
Компонент Карты
События
Событие created
удалено. Используйте v-model
с shallowRef
вместо него:
<template>
<yandex-map @created="map = $event"></yandex-map>
<yandex-map v-model="map">
<yandex-map-default-scheme-layer/>
<yandex-map-default-features-layer/>
</yandex-map>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import { shallowRef } from 'vue';
import { Map } from 'yandex-maps';
import {
YandexMap,
YandexMapDefaultSchemeLayer,
YandexMapDefaultFeaturesLayer
} from 'vue-yandex-maps';
import type { YMap } from '@yandex/ymaps3-types';
const map = ref<Map | null>(null);
const map = shallowRef<YMap | null>(null);
</script>
Событие geo-objects-updated
удалено.
Других событий у компонента больше нет. Вообще. Вместо них используйте yandex-map-listener
.
Документация по всем доступным в listener событиям: https://yandex.ru/dev/jsapi30/doc/ru/dg/concepts/events#list-of-events
Настройки
Большинство настроек теперь передаются в settings
.
Новые настройки (помимо settings
)
Старые настройки
- settings -> теперь настройки карты надо задавать глобально при создании Карты. Передать аля другой apikey/язык/версию больше нельзя
- coordinates -> settings.location.center (обязательно указывать с
zoom
) - events -> используйте
yandex-map-listener
- zoom -> settings.location.zoom (обязательно указывать с
center
) - bounds -> settings.location.bounds
- behaviors -> settings.behaviors
- controls -> используйте yandex-map-controls и его детей
- detailed-controls -> аналоги есть у детей yandex-map-controls
- map-type -> для слоя Спутника вы можете использовать YandexMapDefaultSatelliteLayer
- pan-options -> удалён
Класс карты
Класс карты был изменён с yandex-container
на __ymap
(а также внутренние __ymap_container
, __ymap_slots
).
Примеры
А также все примеры в Карте.
Компонент Маркера
В том виде, в котором вы его знали, компонента больше нет.
Аналоги:
- YandexMapDefaultMarker
- YandexMapMarker
- YandexMapFeature (полигоны/линии)
Гайд опишет миграцию на YandexMapMarker.
Совет
В случае с YandexMapFeature (полигоны/линии) смотрите, что принимает settings
этого компонента и переносите туда настройки, которые поддерживаются, в нужном Яндексу формате - в частности, обратите внимание на geometry
.
Главные отличия
- Переименован в
YandexMapMarker
- Компонент принимает в себя реактивное содержимое в default-слот вместо component
- Содержимого по умолчанию больше нет (только у YandexMapDefaultMarker)
- При зуме компонент ведет себя немного иначе, см. настройку
position
в документации YandexMapMarker - Класс
yandex-balloon
был удалён
Как обновляться
<template>
<yandex-marker coordinates="[51.789682128109, 55.140428698122]" marker-id="1">
<template #component>
</template>
</yandex-marker >
<yandex-map-default-scheme-layer/>
<yandex-map-default-features-layer/>
<yandex-map-marker settings="{coordinates: [51.789682128109, 55.140428698122]}">
<template #default>
<!--- HTML code here --->
</template>
</yandex-map-marker>
</template>
<script lang="ts" setup>
import {
YandexMarker,
YandexMapDefaultSchemeLayer,
YandexMapDefaultFeaturesLayer,
YandexMapMarker,
} from 'vue-yandex-maps';
</script>
- Перепишите настройки на валидные
settings
- Удалите ваши функции типа получения содержимого балуна,
templateLayoutFactory
и прочие - Переместите HTML внутрь
<yandex-map-marker>
, уберите старые костыли, если они у вас были- Если ваш HTML был внутри слота
component
, переместите его просто в корень компонента (<template #default>
или же вообще безtemplate
)
- Если ваш HTML был внутри слота
- Сверстайте ваш маркер, самостоятельно наложив стили,
transition
, иконки и прочее - Проверьте, как маркер ведёт себя при зуме - если хочется "как раньше", примените
position="top left-center"
к компоненту
По сути, <yandex-marker>
стал оберткой, внутри которой вы можете делать что душе угодно - при этом не теряя реактивность.
Настройки
- marker-id -> settings.id
- coordinates -> settings.coordinates (
[lon, lat, alt?]
) - events -> больше не массив, разделился на три события
- onDoubleClick
- onClick
- onFastClick
- radius -> удалён
- type -> удалён, см. YandexMapFeature
- options -> см. YandexMapFeature
Примеры
См. Список примеров
Компонент Коллекция
Сохранён, но обновлён на Карты 3.0 и переименован в YandexMapCollection
. Настроек больше не принимает.
Компонент возвращает YMapCollection
в v-model
.
Компонент Кластер
Сохранён, переименован в YandexMapClusterer
и полностью переписан. Теперь кластеры, как и в случае с маркерами, надо рисовать самостоятельно, шаблона по умолчанию нет.
См. пример кластеризация и документацию по новому кластеру.
Также у маркеров (как и feature) появился параметр hideOutsideViewport
как альтернатива Кластеру для оптимизации.
Компонент Object Manager
Удалён. Используйте параметр hideOutsideViewport
как альтернативу.
Аналогичный параметр есть в том числе у YandexMapFeature
и YandexMapDefaultMarker
.