Здравствуйте!
Мучаюсь целый вечер с такой бедой - не могу корректно настроить вызов пользовательского меню по клику на списке. С API только разбираюсь, так что для получения результата скрестил вместе 2 примера.
Вот кусок кода формирующий список из 3 пунктов. По по клику на пункте выводятся на карту соответствующие группы точек и "map.addControl(new OfficeNavigator(group));" создает элемент меню со списком этих точек, при нажатии на который в свою очередь карта центруется по заданной точке и открывается балун.
Подскажите как сделать так, чтобы при выборе любого из 3х пунктов выводились точки и меню OfficeNavigator только текущего пункта, а остальные точки стирались.
Сейчас получается, что меню OfficeNavigator просто наслаиваются друг на друга и не удаляются, а при добавлении в if строки"map.removeAllOverlays()" метки удаляются, но вместе с размеченными полигонами, которые хотелось бы оставить.
for (var i = 0; i < groups.length; i++) {
addMenuItem(groups[i], map, YMaps.jQuery("#menu")
}
// Добавление одного пункта в список
function addMenuItem (group, map, menuContainer) {
// Показать/скрыть группу на карте
YMaps.jQuery("<a class=\"title\" href=\"#\">" + group.title + "</a>")
.bind("click", function () {
var link = YMaps.jQuery(this);
// Если пункт меню "неактивный", то добавляем группу на карту,
// иначе - удаляем с карты
if (link.hasClass("active")) {
map.addOverlay(group);
// Создание управляющего элемента "Путеводитель по офисам"
var navigator = new OfficeNavigator(group);
map.addControl(navigator);
} else {
map.removeOverlay(group);
map.removeControl(navigator);
}
// Меняем "активность" пункта меню
link.toggleClass("active");
return false;
})
// Добавление нового пункта меню в список
.appendTo(
YMaps.jQuery("<li></li>").appendTo(menuContainer)
)
};