Как инициализировать карту один раз на Vue, но использовать на разных роутах Vue?
Ситуация такая - подключил 2гис к SPA Vue, вставил ее в компоненту(в компоненте инициализирую в mounted) и использую на разных страницах VueRouter эту компоненту. Все работает, но в консоли выдает ошибку что map уже инициализирована. Как сделать правильно?
1 пункт можно пояснить, пожалуйста? Почему?
И то есть карта будет инициализирована 2 раза все равно? (Хоть и после удаляется)
Никак нельзя ее один раз инициализировать для всего проекта?
Если передать id, то компонент при отрисовке будет искать контейнер для карты не внутри своего узла, а по всему DOM. Если ваш id не уникален для каждого нового экземпляра, то DG может попытаться инициализировать карту второй раз, да ещё и вне компонента – отсюда и ошибки.
Инициализировать один раз можно, но это уже не компонент, а директива. Решение, мягко говоря, не очень элегантное, но выглядеть оно будет как-то так:
Не факт, что оно заработает, кстати. 2gis может отвалиться, если элемент карты на некоторое время останется без узла-родителя (скажем, при переходе с одной страницы на другую).
Даниил Братухин, пытался сделать через ссылку, так вообще только в одном месте создается карта. И в консоли пишет - contMap.vue?c8fb:47 Uncaught (in promise) TypeError: Cannot read property '$refs' of undefined
at eval (contMap.vue?c8fb:47)
Даниил Братухин, Друг, помоги разобраться пожалуйста)
Я убрал обертку DG.then, теперь работает на всех роутах, но опять ошибка такая
script.full.js?194a:15 Uncaught (in promise) Error: Map container not found.
У меня такое ощущение, что скрипт 2гиса ищет сам контейнер с id map, как исправить?