M
M
Mad-medved2018-09-10 13:22:43
API
Mad-medved, 2018-09-10 13:22:43

The label collapses into a cluster only when the zoom value is 2. How can I fix this?

There was a problem collapsing the label into a cluster. Label 5 only clusters when zoom is set to 2. Changing the gridSize values ​​doesn't help. This problem occurs in all examples for clustering that are in the Yandex sandbox. In this example: https://tech.yandex.ru/maps/jsbox/2.1/clusterer_create added its own coordinates: https://jsfiddle.net/r0c9a68s/

ymaps.ready(function() {
  var myMap = new ymaps.Map('map', {
      center: [55.751574, 37.573856],
      zoom: 9,
      behaviors: ['default', 'scrollZoom']
    }, {
      searchControlProvider: 'yandex#search'
    }),
    /**
     * Создадим кластеризатор, вызвав функцию-конструктор.
     * Список всех опций доступен в документации.
     * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Clusterer.xml#constructor-summary
     */
    clusterer = new ymaps.Clusterer({
      /**
       * Через кластеризатор можно указать только стили кластеров,
       * стили для меток нужно назначать каждой метке отдельно.
       * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/option.presetStorage.xml
       */
      preset: 'islands#invertedVioletClusterIcons',
      /**
       * Ставим true, если хотим кластеризовать только точки с одинаковыми координатами.
       */
      groupByCoordinates: false,
      /**
       * Опции кластеров указываем в кластеризаторе с префиксом "cluster".
       * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/ClusterPlacemark.xml
       */
      clusterDisableClickZoom: true,
      clusterHideIconOnBalloonOpen: false,
      geoObjectHideIconOnBalloonOpen: false
    }),
    /**
     * Функция возвращает объект, содержащий данные метки.
     * Поле данных clusterCaption будет отображено в списке геообъектов в балуне кластера.
     * Поле balloonContentBody - источник данных для контента балуна.
     * Оба поля поддерживают HTML-разметку.
     * Список полей данных, которые используют стандартные макеты содержимого иконки метки
     * и балуна геообъектов, можно посмотреть в документации.
     * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/GeoObject.xml
     */
    getPointData = function(index) {
      return {
        balloonContentHeader: '<font size=3><b><a target="_blank" href="https://yandex.ru">Здесь может быть ваша ссылка</a></b></font>',
        balloonContentBody: '<p>Ваше имя: <input name="login"></p><p>Телефон в формате 2xxx-xxx:  <input></p><p><input type="submit" value="Отправить"></p>',
        balloonContentFooter: '<font size=1>Информация предоставлена: </font> балуном <strong>метки ' + index + '</strong>',
        clusterCaption: 'метка <strong>' + index + '</strong>'
      };
    },
    /**
     * Функция возвращает объект, содержащий опции метки.
     * Все опции, которые поддерживают геообъекты, можно посмотреть в документации.
     * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/GeoObject.xml
     */
    getPointOptions = function() {
      return {
        preset: 'islands#violetIcon'
      };
    },
    points = [
      [56.326497, 38.133412],
      [56.339793, 38.124535],
      [56.303575, 38.132911],
      [55.914302, 37.866648],
      [55.994914, 37.863423]
    ],
    geoObjects = [];

  /**
   * Данные передаются вторым параметром в конструктор метки, опции - третьим.
   * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Placemark.xml#constructor-summary
   */
  for (var i = 0, len = points.length; i < len; i++) {
    geoObjects[i] = new ymaps.Placemark(points[i], getPointData(i), getPointOptions());
  }

  /**
   * Можно менять опции кластеризатора после создания.
   */
  clusterer.options.set({
    gridSize: 80,
    clusterDisableClickZoom: true
  });

  /**
   * В кластеризатор можно добавить javascript-массив меток (не геоколлекцию) или одну метку.
   * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Clusterer.xml#add
   */
  clusterer.add(geoObjects);
  myMap.geoObjects.add(clusterer);

  /**
   * Спозиционируем карту так, чтобы на ней были видны все объекты.
   */

  myMap.setBounds(clusterer.getBounds(), {
    checkZoomRange: true
  });
});

How to fix it?

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question