Skip to content

Перетаскивание объектов

html
<yandex-map
    :height="height"
    :settings="{
        location: {
            center,
            zoom,
        },
        theme,
        showScaleInCopyrights: true,
    }"
    :width="width"
>
    <yandex-map-default-scheme-layer/>
    <yandex-map-default-features-layer/>
    <yandex-map-default-marker
        v-model="defaultMarker"
        :settings="{
            //Здесь вам НУЖНО брать координаты либо из функции onDragMove, либо из маркера, стриггерив реактивность
            //Яндекс при выполнении функции .update зачем-то подставляет оригинальные координаты, хотя они не менялись =(
            coordinates: defaultMarker ? defaultMarker.coordinates : center,
            title: `Долгота: ${ defaultMarker?.coordinates[0].toFixed(2) }<br>Широта: ${ defaultMarker?.coordinates[1].toFixed(2) }`,
            draggable: true,
            onDragMove,
        }"
    />
</yandex-map>
ts
import {
    YandexMap,
    YandexMapDefaultFeaturesLayer,
    YandexMapDefaultMarker,
    YandexMapDefaultSchemeLayer,
} from 'vue-yandex-maps';
import { shallowRef, triggerRef } from 'vue';
import type { YMapDefaultMarker } from '@yandex/ymaps3-types/packages/markers';

const defaultMarker = shallowRef<YMapDefaultMarker | null>(null);

const onDragMove = () => {
    triggerRef(defaultMarker);
};

Сделано с ♥ под лицензией MIT.