Клуб API Карт

Yandex Map Api 2.1 - как узнать что карта полностью загружена.

nndv
8 августа 2015, 17:57

в ymaps.ready ... не подходит

ymaps.ready(function () {
    initYMap(); // там new ymaps.Map ... и прочее
    alert("Карта загружена"); // хотя карта еще грузится, там что-то отрисовывается
                                          // после появления логотипа Яндекс
});

я хочу для сайта (под декстопный браузер), начинать операции только после отрисовки карты

5 комментариев
Подписаться на комментарии к посту

Узнать что слои отрисовались никак не получится, кроме того это и не нужно знать, некоторые тайлы могут никогда не загрузиться или пользователь сдвинет центр карты

я хочу сделать div невидимым и показать его после того, как все будет загружено, пусть не все, но процессы по загрузке все будут завершены.
по JS исходникам (debug) не могу понять где это место ...
у гугл апи, это есть, и работает:

google.maps.event.addListenerOnce(map,'idle',function(){// do something only the first time the map is loaded});
Мы считаем эту практику очень плохой. Карта на среднем десктопном мониторе загрузит 30-50 тайлов. Даже на среднем соединение легко может сложиться ситуация, когда один или несколько тайлов не загрузятся.

Так я ведь не про прошу выть гарантированное событие, которое мне однозначно скажет, что карта полностью отрендерена.

Мне бы хотя бы, чтобы срабатывал, 1:

map.events.add(['sizechange'], function(e) {
    alert('sizechange');
});

или, 2

map.events.add(['boundschange'], function (e) {
    alert('boundschange');
});

Но он, срабатывает, когда дернуть на отрендеренной карте, либо размер (событие 1), либо контент (событие 2).

Замечательнее, чтобы он еще лучше новое допустим событие на после (у меня маленькая карта, кода не много в ините карты происходит):
map.container.fitToViewport();

Ладно, вопрос тогда снят, это были предложения, выкрутился по другому - принял то, что есть ))