SmartQuery /ВОПРОС → ПРИМЕР → ПОНЯТНЫЙ ОТВЕТ
Веб-разработка

Яндекс Карты: очистить коллекцию geoObjects

В JavaScript API Яндекс Карт 2.1 коллекцию geoObjects можно очистить методом removeAll(). Это удаляет объекты из данной коллекции, а не географические записи из вашей базы. Метод относится к API 2.1; для других библиотек и версий нужны их собственные операции.

Очистить все объекты, добавленные на карту

Следующий фрагмент выполняется после загрузки API и создания myMap:

const before = myMap.geoObjects.getLength();
myMap.geoObjects.removeAll();
console.assert(myMap.geoObjects.getLength() === 0);
console.log('Удалено из коллекции:', before);

Перебирать объекты и вызывать remove для каждого не нужно. Результат removeAll — сама коллекция, а не число удалённых меток. Поэтому для счётчика размер читается перед очисткой.

Очищать только результаты поиска

Если на карте есть постоянные точки и временные результаты, храните их в разных коллекциях. Тогда сброс поиска не уничтожит нужные пользователю ориентиры.

const searchResults = new ymaps.GeoObjectCollection();
myMap.geoObjects.add(searchResults);
searchResults.add(new ymaps.Placemark([55.75, 37.62], {
  balloonContent: 'Пример результата'
}));

// При следующем поиске:
searchResults.removeAll();
console.assert(searchResults.getLength() === 0);

Родительская карта сохраняется. В собственной логике приложения отдельно очистите выбранный ID, список результатов и ссылки на старые объекты, если они больше не нужны. Изменение коллекции не удаляет записи с сервера и не отменяет ожидающий сетевой ответ.

Если метки вернулись

  • Проверьте, не завершился ли предыдущий поиск после очистки и не добавил ли результаты снова.
  • Убедитесь, что очищается та коллекция, в которую добавляли точки.
  • Проверьте другие источники объектов, например ObjectManager: его содержимое управляется его API, а не обещанием универсального removeAll.
  • После очистки проверьте карту, связанный список и повторное добавление нового результата.

Пример относится к Яндекс Картам API 2.1; другие SDK имеют собственные методы.

Документация