Клуб API Карт

Кластеризация полигонов и линий

Allika90
7 августа 2013, 12:38

Здравствуйте!

У меня следующий вопрос, возможно ли производить кластеризацию геообъектов вне зависимости от их типа? Например, метки, многоугольника и линии. Сейчас у меня получается только кластеризировать метки, пробывала с многоугольниками - не выходит.

Заранее спасибо!

5 комментариев
Подписаться на комментарии к посту

Как Вы представляете кластеризацию полигонов и ломаных?

Предположим, есть такой пример:

---------------------------------------------------

// Определение переменых

  var map = new ymaps.Map("map", {

      center: [55.73, 37.75],

      zoom: 10

  }),

  geoObjects = [],

  clusterer = new ymaps.Clusterer({

    preset: 'twirl#redClusterIcons',

    clusterDisableClickZoom: false

  });

 

  // Добавляем геообъекты в массив

  geoObjects[0] = new ymaps.GeoObject({

      geometry: {

        type: "Point",

        coordinates: [55.75, 37.70]

      },

      properties:{ balloonContent: "Метка 1" }

  }, {

    draggable: true,

    preset: 'twirl#redStretchyIcon'

  });

  geoObjects[1] = new ymaps.GeoObject({

      geometry: {

        type: "Point",

        coordinates: [55.75, 37.60]

      }, properties:{ balloonContent: "Метка 2" }

  }, {

    draggable: true,

    preset: 'twirl#redStretchyIcon'

  }),

  geoObjects[2] = new ymaps.GeoObject({

    geometry: {

      type: "Polygon",

      coordinates: [[

              [55.75, 37.80],

              [55.80, 37.90],

              [55.75, 38.00],

              [55.70, 38.00],

              [55.70, 37.80]

          ]]},

    properties:{ balloonContent: "Многоугольник 1" }

  }, {

      draggable: true,

      editorDrawOver: false,

      editorMaxPoints: 20,

      fillColor: '#cccccc',

      strokeColor: '#787878',

      strokeWidth: 1

  });

 

  // Добавляем наши геообъекты в кластер и их на карту

  clusterer.add(geoObjects);

  map.geoObjects.add(clusterer);

----------------------------------------------------------

Если убрать в массиве последний геообъект (многоугольник), то все работает: метки добавляются и кластеризуются при определенном масштабе. Но если в массиве присутствует многоукольник, то ничего не добавляется на карту и возникает ошибка: TypeError: e[o] is undefined.

Относительно того, как я вижу кластеризацию данной задачи: сворачивание всех геообъектов в некоторое представление, например, стандартный кружок с цифрой их колличества в нем.

Поэтому и возник такой вопрос, предусмотрено ли такое поведение или это нужно реализовывать самому в зависимости от масштабов карты?

Спасибо!

Непонятно как кластеризовыветь неточечные геометрии, пространство же нужно разбивать на ячейки и считать плотность объектов в каждой ячейке. А линии с полигонами могут и несколько ячеек занять, как считать их плотность? Так что только вариант заменить полигоны и ломаные точками, кластеризовать, а на подробных масштабах заменять обратно.

Спасибо, я все поняла! Так и сделаю.