Клуб API Карт

Как определить нужный geoObjects

atach
15 августа 2014, 22:32

Возможно вопрос сформулирован некорректно .... Есть общее понятие работы API, но до конца вникнуть не могу ....
На карту добавляются геообъекты из geoXml  (все объекты это полигоны).

Событие1

ymaps.geoXml.load("http://mysite/xmlzone.xml?" + timestamp).then(function (res) {
map.geoObjects.add(res.geoObjects);
}, function (error){
alert('Ошибка: ' + error);
});


Дальше по событию добавляется ещё один объект (уже баллун). Геокодирование адреса.

Событие2

var position = res.geoObjects.get(0).geometry.getCoordinates();
placemark = new ymaps.Placemark(position, {}, {});
map.geoObjects.add(placemark);

 

Вопрос вот в чем. У меня "событие 2" (добавление балуна) повторяется регулярно, и задача очищать предыдущий объект баллун и ставить новый в зависимости от новых координат. Сейчас они только добавляются к уже имеющимся.

 

Подскажите как правильно сделать это. Я пробовал очищать все геообъекты таким путём:

map.geoObjects.each(function (geoObject) {
        map.geoObjects.remove(geoObject);
});

Но при переборе удаляются все объекты и даже полигоны из "события 1". Я не знаю как при переборе исключить полигоны или наоборот найти имеено балун, чтобы применить имеенно к ниму удаление объекта.

 

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

Кажется ваш вопрос скорее про Javascript чем про АПИ.

Если метка у вас всегда одна – храните ссылку на нее и удаляйте ее с карты, затем присваивайте этой переменной новую метку. 

Если их несколько, храните их в отдельной геоколлекции и делайте ей removeAll()

Вот вопрос имеено и про это ...

Я немного не понимаю как мне удалить имеено этот геообъект (метки).

 

Я геокодирую адрес, и добавляю на карту через переменную. geoPoint

 

ymaps.geocode(address, { results: 1 }).then(function (res) {
var firstGeoObject = res.geoObjects.get(0),coords = firstGeoObject.geometry.getCoordinates(),bounds = firstGeoObject.properties.get('boundedBy');geoPoint = firstGeoObject;map.geoObjects.add(geoPoint);});

Потом в по событию я пытаюсь удалить эттот гео объект с карты, но не выходит

 

map.geoObjects.remove(geoPoint);

 

Борис Моисеев
20 августа 2014, 09:43

ситуция у меня примерно такая же, я ни как не могу вытащить объект за пределы работы функции geocode.then(function(res).  Не поднимается объект на верх , замаялся уже. И массивы пробовал писать, и создавать GeoObjectArray.

Как только происходит завершение работы конструкции  ymaps.geocode(pnt.pd, { results: 1 }).then(function(res){

Все ссылки на созданные объекты в пределах данной конструкции чудесным образом исчезают...

описав -   objarray.push(Obj)

objarray - на выходе пустой, но в пределах работы геокодера объекты  определены...

Ни чего понять не могу.