Событие MapBox при загрузке всех плиток

Я использую API Mapbox GL JS для управления картой Mapbox. Прямо перед тем, как я загружу свой результат (который представляет собой canvas.toDataURL) на сервер через HTTP, мне нужно изменить размер моей карты (большее разрешение), а затем использовать fitbounds, чтобы вернуться к исходным точкам. После срабатывания соответствующих границ карте требуется некоторое время, чтобы загрузить все новые фрагменты. Только после этого я действительно могу выполнить загрузку. Однако прямо сейчас я не знаю, есть ли событие, которое может сказать мне, все ли плитки загружены.

Я перепробовал все возможные функции загрузки и события в API. В проекте GITHUB есть несколько проблем, но им уже исполнился год, и обновлений не было. В середине 2015 года они начали говорить о добавлении события Idle, но я нигде не могу найти никакой новой документации по нему.

Кто-нибудь нашел способ заставить код ждать загрузки карты? Или есть информация об обновлении этой функции?

Я сомневаюсь, что это имеет большое значение, но я работаю в приложении angular.js.


person Rentabear    schedule 19.04.2017    source источник


Ответы (1)


Мы только что добавили Map#areTilesLoaded проверку, которая звучит как то, что вы ищете . Это должно выйти в следующем выпуске (v0.37.0). А пока должно работать следующее.

map.on('sourcedata', (e)=> {
    if (map.loaded()) {
     // all tiles are loaded 

     // turn off sourcedata listener if its no longer needed
     map.off('sourcedata');
    }
});
person mollymerp    schedule 26.04.2017