Клуб API Карт

Как обработать ошибку недоступности API яндекса?

aquadusya
27 декабря 2010, 12:12

На случай если таковая возникнет. Чтобы сайт не подвешивался из за того что, например, прокси случайно закрыл этот адрес, ну всякое бывает.

Спасибо!

3 комментария
Подписаться на комментарии к посту
Грузите карту асинхронно. Например (с использование jQuery):

$.getScript("http://api-maps.yandex.ru/1.1/index.xml?key=АПИ-КЛЮЧ&loadByRequire=1", function (response) {
    YMaps.load(initMap);
});

function initMap () {
    var map = new YMaps.Map(YMaps.jQuery("#YMapsID"));
    map.setCenter(new YMaps.GeoPoint(37.609218, 55.753559), 10);
};
Спасибо, сделал, то что надо!
Давайте и я свои 5 копеек внесу.
В общем в свое время сильно прорабатывал эту тему и теоритически и практически, развешивая на клиентах кучу проверок и скармливая тестовый код десяткам тысяч людей.
Даже гуглу писал об этом когда проходил сертификацию, гугл ОЧЕНЬ удивился. Но проверил и подтвердил.

В общем суть проста - любые операции старайтесь делать отложеными\defered, что по русски называется "заворачивать в таймаут", вообще для жизни прекрастной можно запорачивать в так называемые setZeroTimeout чтобы не терять время в житерах таймаутов( но это по желанию )

в данном случае код сашки будет выглядеть как

$.getScript("http://api-maps.yandex.ru/1.1/index.xml?key=АПИ-КЛЮЧ&loadByRequire=1", function (response) {
    setTimeout(function(){YMaps.load(initMap);},1);
});

function initMap () {
    setTimeout(function(){
    var map = new YMaps.Map(YMaps.jQuery("#YMapsID"));
    map.setCenter(new YMaps.GeoPoint(37.609218, 55.753559), 10);
    },1);
};


и он отработает на "20% больше", но всеравно не во всех случаях.