Callback завантаження карти yandex map - stack overflow російською

Помістіть хоча б window.print () всередину ymaps.ready () і замість ymaps.ready (init) викликайте просто init ().

Подій, однозначно показують повне закінчення всіх процедур складання карти поки немає. Однак, як показує практика, завантаження карти закінчується завантаженням всіх тайлів. І в документації є опис як можна додавати нові шари з тайлами. Це робиться за допомогою класів layer.tileContainer.CanvasContainer і layer.tileContainer.DomContainer. У цих-то класів є подія ready. яке викликається коли все тайли шару завантажені. І вони навіть використовуються при відображенні карт, але до їх екземпляру не так просто дістатися.

Якщо ви нічого не робите з шарами, то на карті є один єдиний шар (якщо верств все-таки кілька, доведеться обробляти всі шари в циклах), до якого можна достукатися ось так

Так ми отримуємо примірник Layer. але в його описі немає нічого про tileContainer. однак це поле там є, тільки воно ніби приватне і при мінімізації стає громіздкою (в debug версії це поле _tileContainer). Щоб його знайти можна скористатися ось такою функцією:

Тепер можна зробити так:

Одне погано. Ми не дізнаємося про завантаження всіх тайлів якщо з'ясується, що ми не встигли почати слухати подія до закінчення завантаження тайлів. Непогано було б знати взагалі чогось чекаємо чи ні. Для цього перед "підслуховуванням" події потрібно дізнатися є-ли "неготові" тайли. Це можна перевірити якщо перебрати всі тайли в контейнері і викликати методи isReady () для layer.tile.CanvasTile або layer.tile.DomTile. після цього, якщо неготові тайли є підключати подія. Буде зручно зробити таку функцію, яка буде повертати промис.

У вашому випадку цією функцією можна скористатися так: