Клуб API Карт

Удаление GeoObjectCollection по событию из вне

Виталий
1 октября, 13:36

Добрый день! Не могу разобраться почему не работает. 
Необходимо добавить/удалить полигон по кнопке вне карты. 

$('input[type="checkbox"]').change(function() {
var arr = [всякие данные];
var myGeoObjects = new ymaps.GeoObjectCollection({}, {
    strokeWidth: 2,
    strokeColor: '#c8180f',
    geodesic: true
});
/*if (!$(this).is(":checked")) {
   var arr = []; пытался передовать пустой массив 
}*/
console.log(arr);
for (var i = 0; i < arr.length; i++) {
	item = arr[i];
	myGeoObjects.add(new ymaps.Polygon([item]));
}
myMap.geoObjects.add(myGeoObjects); //коллекция добавляется


if (!$(this).is(":checked")) { // ничего не работает
	//console.log("no :checked"); условие срабатывает
	//console.log(myGeoObjects.toArray());
		myGeoObjects.removeAll();
		//myGeoObjects.splice(0, 3);
		//myMap.geoObjects.remove(myGeoObjects);
};
setTimeout(function(){ // через setTimeout все удаляется
	//myGeoObjects.splice(0, 3);
	//myGeoObjects.removeAll();
  //myMap.geoObjects.remove(myGeoObjects);
}, 5000);
});

Подскажите пожалуйста, полдня убил.

3 комментария
Подписаться на комментарии к посту
В текущем виде так и должно работать. Каждый change создаёт новую коллекцию, ссылка на предыдущую коллекцию myGeoObjects перезаписывается и теряется.
Вынес создание коллекции из change в отдельную функцию, в которую передаю конечные данные по событию change - та же история.  Подскажите как по событию change обратиться ко всем коллекциям добавленным на карту. 
Виталий,
чтобы ответить нужно запускать ваш код и отладчик в браузере. соберите пример своего кода на jsfiddle