Клуб API Карт

Удаление меток

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

Доброй ночи всем, вообщем при вводе на инпут адреса с помощью setCenter(coords,zoom) меняется карта и соответсвенно в этой же координате повляется метка:

myMap.geoObjects.add(new ymaps.Placemark(coords));

и вот так каждый раз когда ввожу адреса появлается новая метка а старые тоже сохраняется. Вроде нашел как удалить здесь: http://api.yandex.ru/maps/doc/jsapi/1.x/dg/tasks/how-to-add-overlay.xml и понял, что при вводе на инпут удалить предыдущую метку и добавлять новую и связи с этим появился вопрос, как получить координаты предыдущей метки? Спасибо за ранее.

9 комментариев

Можно хранить на нее ссылку в переменной.

Вопрос скорее про javascript чем про АПИ

Спасибо. Вроде делаю так:

var myCollection = new ymaps.GeoObjectCollection();
        coordHistory.splice(coordHistory.length ? coordHistory.length-1 : 0,0,coords);
        if(coordHistory.length){
            for(var i=0; i                myCollection.remove(new ymaps.Placemark(coordHistory[i]));
            }
        }
        myCollection.add(new ymaps.Placemark(coords));
        myMap.geoObjects.add(myCollection);

но всё равно старые метки не изчезают. В coordHistory видно все координаты. Можете подсказать в чем ни так?

В вашем посте вы приводите ссылку на АПИ 1.х

а код написан для версии 2.0

 

 

myCollection.remove(new ymaps.Placemark(coordHistory[i]));

Тут написана глупость

Вы создаете метку и сразу ее удаляете

Да, в той ссылке я ошибся, думал пост для АПИ 2 а оказалось для АПИ первого. На самом деле у меня второй.

В доки пишет что нужно указать child по этому, указазывал координаты из истории, по этому писал так:

myCollection.remove(new ymaps.Placemark(coordHistory[i]));

пробовал просто дать координаты так:

myCollection.remove(coordHistory[i]);

всё равно не удаляет.

На самом деле хотел просто удалить предыдущую метку.

Пробовал так без цикла просто удалить все метки из колекции:


myCollection.removeAll(); //удалаю все метки

myCollection.add(new ymaps.Placemark(coords)); //добавляю новую метку
myMap.geoObjects.add(myCollection);

 

И так без результатно.



и еще почему то getLength() возращает 1, а на карте показывает несколько меток?

 

пробовал просто дать координаты так:

myCollection.remove(coordHistory[i]);

Зачем? В документации написано передавать в remove геообъект, а не координаты.

 

removeAll должен помочь, видимо вы и коллекцию зачем то каждый раз создаете новую

 

видимо вы и коллекцию зачем то каждый раз создаете новую

Да, дело в том, что когда в инпуте начинаешь писать название улицы, данные сразу отправляется для определения координата geoObjects.get(0).geometry.getCoordinates(), а от туда в setCenter(coords,zoom), и так на каждую введенную букву. И по этому каждый раз в колекцию добавляется новая метка.

 

А когда колекция создается каждый новая создается, разве не старую обновляет? 

 

А когда колекция создается каждый новая создается, разве не старую обновляет? 

она силой мысли должна обновляться?

у вас должна быть одна коллекция

она силой мысли должна обновляться?

:-D

Вы были правы, вся проблема в этом была. Спасибо вам! (B)(B)(B)[:]|||||||||[:]