Клуб API Карт

Время ожидания загрузки xml

Krugozor
29 мая 2009, 17:40

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

Собственно вопрос:

Можно ли на время ожидания загрузки данных меток (а не самой подложки карты) выдать пользователю некое сообщение, типа "идет обработка данных..."?

3 комментария
Подписаться на комментарии к посту
Да, можно.

Например, перед загрузкой YMapsML-документа пишем сообщение:

document.getElementById("message").innerHTML = "Идет загрузка меток..."
var ml = new YMaps.YMapsML("адрес_Вашего_xml");
map.addOverlay(ml);

А в обработчике загрузки YMapsML убираем это сообщение:
YMaps.Events.observe(ml, ml.Events.Load, function () {
    document.getElementById("message").innerHTML = '';
})
Спасибо.
Пытаюсь добавить эти изменения в свой код - но не получается, не рабоатет.
Не подскажете куда именно нужно добавить эти строчки в моем случае?

        YMaps.jQuery(function () {
            // Создание карты
            var map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]),
           
                // Строка GET-параметров
                getRequest = document.location.search,
               
                // Уникальный ID объекта, который нужно найти
                id = 0;
           
             // Установка для карты ее центра и масштаба
             map.setCenter(new YMaps.GeoPoint(30.179899,59.928893 ), 10);

            // Если строка параметров определена
            if (!!getRequest) {
                // Берем значение первого параметра
                // Подразумевается, что это и будет ID объекта, который нужно найти
                id = parseInt((getRequest.substr(1)).split('&')[0].split('=')[1]); 
            }

            // Загружаемый YMapsML-документ
            var ml = new YMaps.YMapsML('http://site.ru/points.xml');

        map.addControl(new YMaps.TypeControl());
            map.addControl(new YMaps.ToolBar());
            map.addControl(new YMaps.Zoom());
            map.addControl(new YMaps.MiniMap());
            map.addControl(new YMaps.ScaleLine());
        map.addControl(new YMaps.SearchControl());
        map.enableScrollZoom();

            // Обработчик успешной загрузки YMapsML
            YMaps.Events.observe(ml, ml.Events.Load, function () {
           
                // Если ID не был определен
                if (id) {
                    // Ищем объект с нужным ID
                    var filter = this.filter(function (obj) {
                        return obj.id == id;
                    });
                  
                    // Добавляем найденный объект на карту
                    map.addOverlay(filter[0]);
                   
                    // Открываем балун
                    filter[0].openBalloon();

                // Если значения у первого параметра не было найдено, то отображаем все объекты
                } else {
                    map.addOverlay(ml);
                }
            });
        });