Open yuriylevchuk opened 2 years ago
Мне необходимо обрабатывать ситуации когда произошла какая-то ошибка при инициализации карт Как пример: карты заблокированы в определенном регионе
loadYmap(ymapConfig) .then(() => { // do some }) .catch(() => { // do some })
Вариант решения
export function ymapLoader(settings = {}) { return new Promise((res, rej) => { if (window.ymaps) return res(); if (document.getElementById('vue-yandex-maps')) { emitter.$on('scriptIsLoaded', res); return } const yandexMapScript = document.createElement('SCRIPT'); const { apiKey = '', lang = 'ru_RU', version = '2.1', coordorder = 'latlong', debug = false, enterprise = false, } = settings; const mode = debug ? 'debug' : 'release'; const settingsPart = `lang=${lang}${apiKey && `&apikey=${apiKey}`}&mode=${mode}&coordorder=${coordorder}`; const link = `https://${enterprise ? 'enterprise.' : ''}api-maps.yandex.ru/${version}/?${settingsPart}`; yandexMapScript.setAttribute('src', link); yandexMapScript.setAttribute('async', ''); yandexMapScript.setAttribute('defer', ''); yandexMapScript.setAttribute('id', 'vue-yandex-maps'); document.head.appendChild(yandexMapScript); emitter.scriptIsNotAttached = false; yandexMapScript.onload = () => { ymaps.ready(() => { emitter.ymapReady = true; emitter.$emit('scriptIsLoaded'); res(); }, rej); // Вторым параметром в ready передаем коллбэк для ошибки }; // На практике этой обработки недостаточно, так как этот скрипт может загрузиться успешно, // но этот скрипт загружает еще один скрипт с другим доменом и там происходит ошибка yandexMapScript.onerror = rej; }); }
Мне необходимо обрабатывать ситуации когда произошла какая-то ошибка при инициализации карт Как пример: карты заблокированы в определенном регионе
Вариант решения