Клуб API Карт

Возможно ли временное отключение кластеризатора?

Пост в архиве.
yegor-l
4 июня 2012, 12:43

При максимальном зуме некоторые кластеры не раскладываются на отдельные точки из за близости координат. В связи с этим хотелось бы отключать кластеризацию на ближнем зуме.

Пока сделал вот так: 

myMap.zoomRange.get(myMap.getCenter()).then(function (range) {
   if(range[1] == myMap.getZoom()){
      if (cluster.options.get('gridSize') > 1) {
         cluster.options.set({gridSize: 1});
      }else{
         cluster.options.set({gridSize: 64});
      };
   };
});

 

но таким образом сначала рисуется метка кластера, и только потом (после ощутимой задержки) она превращается в отдельные точки.

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

 

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

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

К сожалению не поможет. Она отключает с конкретного масштаба, а хочется на крайнем, независимо от того какой масштаб доступен для местности.

Я подумаю над вашим предложением, может и стоит сделать такую опцию.

Пока что корректное решение такое - следить за изменением zoomRange и по нему перезадавать опцию.

map.zoomRange.events.add(change, function (e) {

    clusterer.options.set({maxZoom: e.get('newZoomRange')[1] - 1});

});

почему-то консоль упорно сообщает что 

change is not defined

 

change - должно быть строкой

map.zoomRange.events.add('change', function (e) {