Клуб API Карт

Динамическая работа с метками

fasexe
5 февраля 2014, 23:24

Доброго времени суток!

Использую Stable API 2.0

Создаю карту:
 

 center = [ymaps.geolocation.latitude, ymaps.geolocation.longitude];
myMap = new ymaps.Map('myMap', {
    center: center,
    zoom: 13,
    type: 'yandex#publicMap'
});
myMap.controls.add('zoomControl', {
    left: 20,
    top: 20
});
myMap.behaviors.enable('scrollZoom');
loadAll();
function loadAll() {
    var clusterIcons = [{
        href: '/assets/cluster.png',
        size: [53, 52],
        // Отступ, чтобы центр картинки совпадал с центром кластера.
        offset: [-27, -27]
    }],
        clusterer = new ymaps.Clusterer({
            clusterIcons: clusterIcons
        }),
        geoObjects = [];
    $.getJSON("/transport_units/all.json", function (data) {
        for(var i = 0, len = data.length; i < len; i++) {
            geoObjects[i] = new ymaps.Placemark(
                [data[i].lat, data[i].lng], {}, {
                    iconImageHref: data[i].icon,
                    iconImageSize: [32, 32],
                    iconImageOffset: [-32, -32]
                });
        }
        clusterer.add(geoObjects);
        myMap.geoObjects.add(clusterer);
    });
    //    setTimeout("actualise()", 5000);
}

 
Вопрос
Функция setTimeout("actualise()", 5000)
Раз в пять секунд получает список элементов, с измененными координатами, соответственно количество элементов в этом списке отличается от количества изначально загруженных элементов, т.к. некоторые объекты изменили свои координаты, а другие по иным причинам попали теперь в этот список

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

Для обеспечения идентификации элемента через индекс я пробовал загружать в массив элементы следующим образом

geoObjects[data[i].id] = new ymaps.Placemark(

на что валится такая ошибка
TypeError: t is undefined - combin...s2_0_36 (line 1)

Пробовал явно преобразовать полученное значение data[i].id в int

parseInt(data[i].id)

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

В составе json ответа такой массив

[{"id":1,"entity":"Горводоканал","phone":"","gos_number":"","speed":0,"time":"2014-02-04T17:35:51.000Z","icon":"/transport_type/icon/icons/1/t5_original.png?1391610192","direction":"http://transport.t.proxylocal.com/assets/direction/225.png","lat":57.7644,"lng":40.955}, ... ]

 

Каким же образом мне идетнифицировать элемент в массиве geoObjects?


Надеюсь достаточно разъяснил вопрос 8)

2 комментария
Подписаться на комментарии к посту

Открываем пользовательское соглашение

И читаем: 

2.3.7. ОГРАНИЧЕНИЯ. Используя Сервис, Пользователь не имеет права:


2.3.7.3. Создавать на основе Сервиса системы мониторинга транспортных средств, отображающих информацию в реальном времени, и любые другие услуги, связанные с управлением и диспетчеризацией транспортных средств.

Добрый день.

К сожалению использовать API Яндекс.Карт таким образом нельзя. Напишите пожалуйста мне письмо на адрес ache@yandex-team.ru для разрешения этого вопроса.