Клуб API Карт

Скрыть/удалить метки, подгруженные через YMapsML

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

Добрый день!

Столкнулся с небольшой проблемой, мне необходимо по нажатию на кнопку с id=button-two сделать скрытие/удаление всех меток с карты подгруженные через YMapsML. Каким образом это можно осуществить? Попробовал применить решения для удаления групповых меток, это не то.

Решения нигде не нашел, ни в документации, ни в клубе. В клубе есть решения, но они все связаны с групповыми метками.

 

 

ymaps.ready(init);

function init () {

var myMap = new ymaps.Map('YMapsID', {

center: [54.633459,39.80189],

zoom: 12,

behaviors: ['default', 'scrollZoom']

});

myMap.controls.add('zoomControl');

window.loadXml = function (url) {

ymaps.geoXml.load(url).then(function (res) {

myMap.geoObjects.add(res.geoObjects);

if (res.mapState) {

res.mapState.applyToMap(myMap);

}

});

};

 

$('#button-two').click(function () {

myMap.geoObjects.removeAll();

return false;

});

$('#button-one').click(function () {

loadXml('путь к xml-файлу');

return false;

});

}

 

Спасибо.

 

4 комментария

У myMap.geoObjects нет метода removeAll, есть метод remove.

Вы должны передать в него ссылку на объект, который вы добавили на карту в в обработчике загрузки geoXml, т.е. фактически ссылку на res.geoObjects.

Спасибо за ответ!
Я уже пробовал так

myMap.geoObjects.remove(res.geoObjects);

Не помогает.

в firebug выводится ошибка

res is not defined

В обработчике загрузки вам нужно сохранить ссылку на res.geoObjects в глобальной области видимости, т.к. res это локальная переменная и за пределами обработчика загрузки она не существует.

Спасибо большое!

Теперь помогло (+1)