Клуб API Карт

Найдено на тему «customize»:
Как изменять оформление активной метки?
Elf W.
9 июня 2017, 12:26

На карте добавлено множество меток с помощью ObjectManager. Нужно сделать так, чтобы при клике на любую метку карта центр карты перемещался на метку (реализовано) и метка увеличивалась в размерах. При клике на другую метку предыдущая должна восстанавливать исходный размер и вся последовательность операций повторяться. Проблема с восстановлением исходного размера метки — не знаю, как реализовать. 

Нашел пост, где в комметарии предлагается вариант решения схожей проблемы. В моем случае такой вариант  не подошел, поскольку я не могу в получаемый json с данными для добавления в objectManager добавлять настройки для меток, да и как потом мне их переключать? Пробовал следующим образом (код обработчика клика на метке, для упрощения примем map и objectManager глобальными переменными):

function onPlacemarkClick(e) {
  const activeObject = e.get('target');
  const id = e.get('objectId');
  const coords = e.get('coords');

// перемещение карты
  map.setCenter(coords, 15, {duration: 200});

// установка параметров текущей метке
  objectManager.objects.setObjectOptions(id, {
    iconImageSize: [50, 50],
    iconImageOffset: [-25, -25]
  });

// попытка сброса параметров всем меткам в коллекции - не работает!!
  objectManager.objects.each(obj => {
    if (obj !== activeObject) {
// ругается на метод set
      obj.options.set({
        iconImageSize: [30, 30]
      })
    }
  });
}

Ругается затейливо, вот фрагмент:

Я подозреваю, что нет такого метода, но что тогда нужно использовать для реализации требуемого функционала? Или вообще сменить подход?

1 комментарий
ObjectManager,geoObjects,customize
Как правильно настроить балун для objectManager?
Elf W.
8 июня 2017, 10:35

Столкнулся с проблемой на совершенно ровном месте: не получается настроить балун для ObjectManagerʼa. Вот таким образом пытался:

const objectManager = new ymaps.ObjectManager({
    clusterize: true,
    gridSize: 32,
    clusterDisableClickZoom: true,
    clusterHasBaloon: false,
    clusterOpenBalooOnClick: false,
});
метки нет и балун есть, хотя я писал наоборот

Результат, как видно, не тот, какой задавался. Потом попробовал иначе:

const objectManager = new ymaps.ObjectManager({ 
    clusterize: true, 
    gridSize: 32, 
});
objectManager.clusters.options.set({
    preset: 'islands#blackClusterIcons',
    hasBaloon: false,
    hintContent: "Куча адресов",
    hideIconOnBaloonOpen: false,
});

Результат нисколько не поменялся — никаких хинтов, метка пропадает, балун появляется. Весь код пишу, внимательно вглядываясь в доки. Что я пропустил?

2 комментария
ObjectManager,baloon,customize