Полностью эджексовый сайт. Переключение языков тоже происходит динамической подгрузкой из БД без перезагрузки страницы. Т.к. переключение языков не предусмотрено в Яндекс картах, то возникает необходимость перезапуска API с новым параметром lang. Перезагрузка страницы недопустима по условиям задачи. Пробовал испытанные способы динамической загрузки внешних скриптов.
Способ 1:
$.ajax({
type: 'GET',
url: 'https://api-maps.yandex.ru/2.1/?lang=en_US',
dataType: "script",
cache: true,
success: function() {
init();
}
});
Способ 2:
var script = document.createElement('script');
if (script.readyState && !script.onload) {
// IE, Opera
script.onreadystatechange = function() {
if (script.readyState == "loaded" || script.readyState == "complete") {
script.onreadystatechange = null;
init();
}
}
}
else {
// Rest
script.onload = function() {
init();
};
}
script.src = 'https://api-maps.yandex.ru/2.1/?lang=en_US';
document.getElementsByTagName('head')[0].appendChild(script);
В обоих случаях получаю TypeError: ymaps.Map is not a constructor. С обычным статическим прописыванием в <head> все работает. Обгуглил все, что можно, странно, что мало кто сталкивался с этой проблемой.