Клуб API Карт

Ajax-загрузка страницы с картой

angel-de-la-noche
17 марта 2014, 22:53

Подскажите, как правильно подключать карту на странице, загружаемой через ajax, чтобы избежать ошибки "ymaps is not defined"? 

 

Работают два варианта: 

 

1. Добавление скрипта прямо в head

 

var script = document.createElement('script');

script.setAttribute("type","text/javascript");

script.setAttribute("src", "//api-maps.yandex.ru/2.1-dev/?lang=ru-RU&load=package.full");

script.onload = function() {

    ymaps.ready(initMap);

};

document.getElementsByTagName("head")[0].appendChild(script);

 

 

2. Таймаут

 

function initMapEditor(config) {

    if (typeof window.ymaps !== "undefined") {

        window.ymaps.ready(function() {

            // понеслась

        });

    } else {

        // пока рано

        window.setTimeout(function () {initMapEditor(config)}, 100);

    }

};

Но какие-то они кривые и вообще некрасивые.
3 комментария

При подключении скрипта карт можно указать callback который будет вызван по загрузке.

onload не совсем стабилен.

angel-de-la-noche
17 марта 2014, 23:15

О, точно. Спасибо!

support@imperiaexpert.ru
22 апреля 2016, 11:44
А у меня onload не работает почему-то. В консоле пишется: "Uncaught TypeError: Cannot read property 'call' of undefined"


Подключаю такой URL: https://api-maps.yandex.ru/2.1/?lang=ru_RU&onload=svinit