Задать вопрос
sittingbull
@sittingbull
Front-end Developer

Как постепенно отображать координаты на Яндекс Карте?

Как постепенно, через какой-то промежуток времени отображать на Яндекс Карте, хранимые в массиве координаты? Я понимаю, что это несколько искусственная ситуация, но все же. Первое, что пришло мне на ум, так это использовать setTimeout и setInterval перед вызовом функции отрисовки точки.

// Функция ready вызовется тогда, когда API будет загружен и DOM сформирован
ymaps.ready(init);

var myMap, myPlacemark;

// Массивы координат
var Latitude = [53.8912, 53.8916, 53.8923, 53.8928,]
var Longitude = [27.5669, 27.5669, 27.5663, 27.5662,]

function init(){ 
    myMap = new ymaps.Map("map", {
        center: [Latitude[0], Longitude[0]],
        zoom: 10
    });

    for(i = 0; i < Latitude.length; i++) {
        setTimeout(addPoint, 5000, myMap, Latitude[i], Longitude[i]); 
    }
}

function addPoint(Map, lat, lon) {
    myPlacemark = new ymaps.Placemark([lat, lon, { 
        content: 'Current location', 
        balloonContent: 'myBalloonContent' 
    });

    Map.geoObjects.add(myPlacemark);
}

Но у меня отображается только одна единственная координата. Как сделать так, чтобы через каждые пять секунд на карту добавлялась новая точка? Можно сделать так, чтобы при добавлении новой точки обновлялся только контейнер с картой, а не вся страница?
  • Вопрос задан
  • 519 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
forgotten
@forgotten
Руководитель разработки API Яндекс.Карт
Вы делаете стандартную ошибку человека, не знакомого с JavaScript. В вашем коде будет 4 раза добавлена метка с одними и теми же координатами.
javascript.ru/book/definitiveguide раздел «Область видимости функций и замыкания»
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы