никак не могу понять принцип работы методов remove* и add* у geoQuery. например, есть код:
var res = ymaps.geoQuery( yMap.geoObjects) // как понимаю, забираем все объекты типа geo с текущей копии карты .removeFrom(yMap.geoObjects); // тут, по идее, чистим полностью результат geoQuery, загоняем результат в переменную res.then(() => { console.log('remove:' + yMap.geoObjects.getLength() + ", but res:" + res.getLength()); }).add(new ymaps.Polyline([[25, 65], [35, 66], [34, 62], [34, 63]])) // добавляем новый объект в результат .then(() => { console.log('add:' + yMap.geoObjects.getLength() + ", but res:" + res.getLength()); }).addTo(yMap.geoObjects) // выводим результат в коллекцию geo-объектов .then(() => { console.log('addTo:' + yMap.geoObjects.getLength() + ", but res:" + res.getLength()); });
прогоняем этот код раза 4, в результате ждем такое поведение:
1. geoQuery, затем вызов removeFrom => результат пустой, однако вывод в консоль "remove:4, but res:3". откуда объекты в результате geoQuery после вызова removeFrom, если и в качестве источника, и в качестве удаляемой коллекции используется yMap.geoObjects? не пойму.
2. add => должен добавиться новый объект в результат, но в консоле "add:4, but res:3". почему 3, а не 1?
3. addTo => в коллекции yMap.geoObjects должен добавиться результат geoQuery, однако в консоле "addTo:4, but res:3", т.е. с момента вызова removeFrom ничего не изменилось.
явно че-т не понимаю (