Как добавить точку на карте yandex map в Vue 3?

Добрый день существует проблема при добавлении точки на карте если мы используем vue 3 я имею ввиду что если мы делаем инициализацию карты через
data(){
return {
map:null
}
},
methods:{
    initMap() {
       this.map = new ymaps.Map(this.$refs.map, {
        center:this.center,
        controls: [],
        zoom: this.zoom
      });
},
  mounted() {
    this.initMap()

  }

а потом пытаюсь добавить точку на карте через

this.map.geoObjects.add(myPlacemark)
то происходит ошибка
0H-bNDFcYyI.jpg?size=757x171&quality=96&sign=50436dc77e7ca59c9632051ce670a8d6&type=album
если я делаю не через this а, через переменную то ошибки не происходит и все хорошо
let map;
...
initMap() {
       map = new ymaps.Map(this.$refs.map, {
        center:this.center,
        controls: [],
        zoom: this.zoom
      });

, я почему то думаю что тут проблема из за proxy vue3 но как решить данную проблему - не знаю
  • Вопрос задан
  • 454 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Яндекс.Карты
думаю что тут проблема из за proxy

Тогда попробуйте получать оригинальный объект и работать уже с ним:

Vue.toRaw(this.map).geoObjects.add(placemark);

Или изначально не делайте его реактивным:

this.map = Vue.markRaw(new ymaps.Map(this.$refs.map, {
  ...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@amrskv
Мне помогло объявление карты не как реактивного объекта

https://v3.ru.vuejs.org/ru/api/refs-api.html#shallowref

import { onMounted, ref, shallowRef, watch, nextTick } from 'vue'

const myMap = shallowRef({})

const initMap = () => {
  myMap.value = new ymaps.Map('map', {
    center: actualCity.value.coords,
    zoom: 12,
    controls: []
  }, {
    searchControlProvider: 'yandex#search'
  })
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы