Клуб API Карт

5 комментариев

Я не понял зачем там был таймаут, может раньше нужен был, но сейчас у меня работает так:

$('a').click(function(){
  myMap.balloon.close(); // close all previous

  /**
   * Это решение любезно предоставлено здесь:
   * http://blog.skahin.ru/2012/09/yandex-map.html
   * +
   * Пример отсюда:
   * http://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/map.ZoomRange.xml
   */
  var coords = geoObject.geometry.getCoordinates();
  myMap.zoomRange.get(coords).then(function (range) {
    myMap.setCenter(coords, range[1], {
      checkZoomRange: true, // контролируем доступность масштаба
    }).then(function() { // спозиционировались
      geoObject.balloon.open(); //открытие балуна
    });
  });
  return false;

});

В песочнице есть пример на эту тему http://api.yandex.ru/maps/jsbox/2.1/clusterer_balloon_open

Спасибо, я незаметил этого сразу. Скажу что это не решило задачу полностью, хотя и помогло.

Возникли такие проблемы:
1) если кластера и маркера нет на карте, то код из примера не работает (ничего не открывает, objectState.isClustered == false && objectState.isShown == false, т.е. этот вариант из коробки не предусмотрен, но по-моему это частая ситуация, как быть?)
1.1) тут я вижу решение в комбинации предложенного в начале темы метода и примера Яндекса. Поясню в коде:

/**
 * Это ПСЕВДОКОД! Только для демонстрации логики.
 */
$('ul.map-objects li a').click(function () {

  if (clusterer) {
    if (objectState.isClustered) {
      // маркер скрыт в кластере - открываем балун кластера
    } else if (objectState.isShown) {
      // маркера виден - открываем балун маркера
    } else {
      // центрируем карту по точке (не приближая) и открываем балун кластера
    }
  }
  else {
    // центрируем карту по точке и открываем балун маркера
  }

  return false;
});


2) если окрылся балун кластера, но хочется посмотреть ближе - пробую нажимать масштаб (+), балун соответственно пропадает, а можно ли как-то так чтобы он оставался, и зум приближал к объекту с открытым балуном?

P.S.: и всё таки хочется такую логику "из коробки", мне кажется это востребовано: если маркеры в кластере, то найти такой масштаб, на котором кластер выбранного маркера "раскрывается", затем приблизить и показать балун маркера (а не кластера).

1.1 Решение ок

2. Сейчас из коробки решения нет. Вы можете переопределить макет содержимого балуна кластера и добавить туда кнопку. При клике на кнопку центрировать карту на соотвествующей метке.

 

Нас действительно часто про это спрашивают, может пришло время сделать в апи какое-то решение. Подумаем на эту тему к будущим релизам.

Спасибо