Клуб API Карт

Как удалить метку при помощи remove

anton106
6 августа 2012, 11:30

Всем привет! У меня на сайте есть список адресов, при клике на любой из них показывается метка с описанием, хотелось бы сделать так, что при клике по следующему адресу удалялся предыдущий.

Пытался реализовать при помощи myMap.geoObjects.remove(placemark1);, но не получилось. Подскажите, пожалуйста, в чем моя ошибка.

 

function (res) {
if (res.geoObjects.getLength()) {
var point = res.geoObjects.get(0),
coords = point.geometry.getCoordinates(),
placemark1 = new ymaps.Placemark(coords, {
balloonContentBody : "<h3>" + search_query +"</h3>",
},
{
preset : 'twirl#redIcon',
zIndex:651
}
);
myMap.geoObjects.remove(placemark1);
myMap.geoObjects.add(placemark1);
myMap.setZoom(13).panTo(coords);

}
}

 

 

//по клику ищем адрес в списке
$('ul#my-menu li ul li a.street').click(function () {

//получаем координаты
var search_query = $(this).attr('name');
var myGeocoder888 = ymaps.geocode(
// Строка с адресом, который нужно геокодировать
search_query, {
boundedBy: myMap.getBounds(),
// - искать только в этой области
strictBounds: false,
// - требуемое количество результатов
results: 1,
}
);
myGeocoder888.then(
function (res) {
if (res.geoObjects.getLength()) {
var point = res.geoObjects.get(0),
coords = point.geometry.getCoordinates(),
placemark1 = new ymaps.Placemark(coords, {
balloonContentBody : "<h3>" + search_query +"</h3>",
},
{
preset : 'twirl#redIcon',
zIndex:651
}
);
myMap.geoObjects.remove(placemark1);
myMap.geoObjects.add(placemark1);
myMap.setZoom(13).panTo(coords);

}
},
// Обработка ошибки
function (error) {
alert("Возникла ошибка: " + error.message);
}
)
});

 

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

вы перезаписываете ссылку на placemark1 и потом пытаетесь ее удалить

Спасибо за ответ! сейчас пробовал myMap.geoObjects.remove(placemark1); перенести выше, добился только того что или карта не показывалась вообще или не происходило никаких действий на клик. Можете подсказать куда в коде эту строку определить?

я вообще не вижу где у вас эта переменная создается

должно быть примерно так

placemark1 && myMap.geoObjects.remove(placemark1);

placemark1 = new ymaps.Placemark(coords, {

Здравствуйте. 

Как мне скыть метку? Сейчас есть удаление метки из коллекции, на карте метка исчезает, но я так понимаю она совсем удаляется из коллекции и с карты.

 

 

this.changeDriverStatus = function(idDriver, longitude, latitude, status)
    {    DriverCollection.each(function (item)   {   if (item.properties.get('name') == idDriver)    {   //item.geometry.setCoordinates([latitude, longitude]);   DriverCollection.remove(item);   }   });       }

 

 

Может быть для этого есть какое-то свойство метки? Заранее спасибо!