Клуб API Карт

не срабатывает map.removeAllOverlays();

yegor-l
7 мая 2009, 12:28

алгоритм получения ошибки:

идём сюда: http://www.eeyore.aroundspb.ru/index-lea.php?o=423
map.addOverlay(placemark1); placemark1.openBalloon();

и уменьшаем масштаб, для наглядности


выбираем тип точек такой же как отрытая (в данном случае красные(культовые))
map.addOverlay(gCollection[1]);


выбираем "очистить"
map.removeAllOverlays();


При этом часть точек остаётся нарисованными. И при изменении масштаба остаются (или перепрыгивают, если двигались в стороны) на прежних местах относительно окна, уже не соответствующих карте.

7 комментариев
Подписаться на комментарии к посту
А можете выделить минимальный кусок кода на отдельной страницы с подобной ошибкой?
удалил всё лишнее http://www.eeyore.aroundspb.ru/error.php 1. открываем 2. тыкаем "природные" 3. тыкаем "очистить" 4. крутим масштаб и наблюдаем
Вы один и тот же объект два раза добавили на карту. Для того, чтобы исправить ошибку, Вам необходимо убрать вызов: map.addOverlay(placemark1); placemark1.openBalloon();
Спасибо. а как мне можно показать только одну точку из gCollection? я при формировании списка точек проверял наличие нужной точки и её присваивал placemark1 = placemark; (в виде гипотезы: получается, что так она не копируется, а просто обе переменные указывают на один и тот же объект?)
Да просто ее (назовем ее Точка1) добавляете, но перед добавлением группы на карту, Точку1 нужно удалить с карты.
муторно проверять. сделал из неё новый объект и заработало.
переделал следующим образом: вместо присваивания placemark1 = placemark; создаю новый объект placemark1 и дальше его уже рисую на карте. но всё равно removeAllOverlays(), исходя из названия, должен удалять всё с карты и не спотыкаться о двойную отрисовку.