Яндекс Карты: очистить коллекцию 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 имеют собственные методы.