Клуб API Карт

Поставить метку меню, удалив все остальные

Ilya10991
21 января, 21:04

Есть код, который выводит метки на карте. При нажимании ссылки он удаляет выбранные метки(которые принадлежат данному пункту меню, а мне нужно чтобы при нажатии на пункт, оставались метки этого пункта, а все остальные(других пунктов), удалялись. Этот код на строчка 30-42(полностью привелк код, чтобы понимать ситуацию). Заранее благодарен за ответ

ymaps.ready(init);
 
function init() {
 
 
  var myMap = new ymaps.Map('map', {
      center: [50.443705, 30.530946],
      zoom: 14
    }, {
      searchControlProvider: 'yandex#search'
    }),
 
    menu = $('<ul class="menu"></ul>');
 
  for (var i = 0, l = groups.length; i < l; i++) {
    createMenuGroup(groups[i]);
  }
 
  function createMenuGroup(group) {
 
    var menuItem = $('<li><a href="#">' + group.name + '</a></li>'),
 
      collection = new ymaps.GeoObjectCollection(null, {
        preset: group.style
      }),
 
      submenu = $('<ul class="submenu"></ul>');
 
 
    myMap.geoObjects.add(collection);
 
    menuItem
 
      .appendTo(menu)
 
    .find('a')
      .bind('click', function() {
        if (collection.getParent()) {
          myMap.geoObjects.remove(collection);
        } else {
          myMap.geoObjects.add(collection);
        }
      });
    for (var j = 0, m = group.items.length; j < m; j++) {
      createSubMenu(group.items[j], collection, submenu);
    }
  }
 
  function createSubMenu(item, collection, submenu) {
 
    var submenuItem = $('<li><a href="1">' + item.name + '</a></li>'),
 
      placemark = new ymaps.Placemark(item.center, {
        balloonContent: item.name
      });
 
 
    collection.add(placemark);
 
    submenuItem
      .appendTo(submenu)
 
    .find('a')
      .bind('click', function() {
        if (!placemark.balloon.isOpen()) {
          placemark.balloon.open();
        } else {
          placemark.balloon.close();
        }
        return false;
      });
  }
 
  menu.appendTo($('body'));
 
  myMap.setBounds(myMap.geoObjects.getBounds());
}

2 комментария
Подписаться на комментарии к посту
if (!collection.getParent()) {
myMap.geoObjects.removeAll();
myMap.geoObjects.add(collection);
}
dimik,
Добрый день, подскажите как в этом вашем варианте при нажатие на ссылку в сайтбаре, все метки закрывались, а оставалась группа меток которые привязаны на эту ссылку, в принципе вопрос аналогичный теме, только вот код другой, помогите пожалуйста неучу), вот ваша работа вроде http://dimik.github.io/ymaps/examples/group-menu/menu03.html