Клуб API Карт

Индикатор загрузки

Пост в архиве.

Привет.

Загружаю на карту нескоько файлов KML, можно ли показать некий индикатор загрузки (что бы можно было понять что все объекты уже загружен и можно работаь с картой)

7 комментариев
Всеволод Шмыров
27 января 2016, 23:58
Доброе утро.
В API по умолчанию не такой возможности.
Вы можете реализовать "лоадер" сами. Это же просто какой-то элемент, который начинает отображаться перед вызовом ymaps.geoXml.load и скрывается, как только все данные будут загружены.

как понять что все данные загружены?

Всеволод Шмыров
27 января 2016, 23:58
Вы в ymaps.geoXml.load передаете функцию, которая как раз и вызывается по окончанию загрузки. Вы знаете сколько было запрошено файлов, а значит знаете сколько должно быть вызвано функций.

Можно использовать интерфейс промисов чтобы определить момент загрузки всех файлов

myPreloader.show();

ymaps.vow.all([

    ymaps.geoXml.load(...),

    ymaps.geoXml.load(...),

    ymaps.geoXml.load(...)

]).done(function () {

    // все загрузили, прячем прелоадер

    myPreloader.hide();

});

позже попробую ваш вариант.

Сначала то что проще, думал так:

                        for (var i = 0; i < 10; i++) {

                            var _pathFile = "http://mysite.com/" + i.toString() + ".kml";

                            ymaps.geoXml.load(_pathFile)

                                    .then(function (res) {

                                        alert("Загружен: " + i);

                                        myMap.geoObjects.add(res.geoObjects);

                                    });

                        }

 

Что в итоге: Увидел как вышло 10 надписей, и только потом увидел прорисовку объектов на карте

очевидно что в этом коде 

alert("Загружен: " + i);

будет всегда выводить "Загружен: 10"

dimik,
молодец, ты прошел собеседование)!