Клуб API Карт

Как приблизить кластер

ngs-leto
30 апреля 2015, 13:41

Подскажите пожалуйста как программно приблизить кластер, как это делается по клику на нем но при clusterDisableClickZoom=true?

Пробую так:

            objectManager.clusters.events.add('click', function onObjectEvent (e) {
               var objectId = e.get('objectId');

               var obj = ObjectManager.clusters.getById(objectId);
     
                if (myMap.getZoom()<16)
                {
                    //приближаем кластер
                    map.setBounds( obj.getBounds() );
                }else{
                    //Показываем балун
                }

}

не хочет... obj.getBounds() - дает ошибку

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

Ну помогите пожалуйста, я так и не смог разобраться...

на данный момент этого метода нет.

придется расчитывать самому на основе геометрий входящих в кластер объектов

    function onClusterEvent (e) {

        var objectId = e.get('objectId');

        console.log(objectManager.clusters.getById(objectId).properties.geoObjects);

}

Спасибо за ответ!!!

В общем сделал по вашей рекомендации так:

 

function MyGetBounds(obj){
                    var minP=[999,999];
                    var maxP=[0,0];
                    for (var i in obj)
                    {
                        minP[0] = Math.min(minP[0], obj[i].geometry.coordinates[0]);
                        minP[1] = Math.min(minP[1], obj[i].geometry.coordinates[1]);
                       
                        maxP[0] = Math.max(maxP[0], obj[i].geometry.coordinates[0]);
                        maxP[1] = Math.max(maxP[1], obj[i].geometry.coordinates[1]);
                    }
                    //alert(minP[0]+' '+ minP[1]);
                    //console.log();
                    return [minP,maxP];

}
myMap.setBounds(ObjectManager.clusters.getById(objectId).properties.geoObjects; );

 

Работает но теперь проблема в том, что допустим когда нажимаешь на кластер в котором объекты с одинаковыми координатами  - он приближается видимо через-чур близко и карта отказывается работать "Для этого участка местности не т данных". Кликаешь на зумаут пару раз и все норм.

Как этого избежать?

Всё - решил!

myMap.setBounds( MyGetBounds(obj) , {checkZoomRange:true, zoomMargin:100});

СПАСИБО ЗА ПОМОЩЬ!!!;-)

dimik,
охренеть, где только не искал возможность достать geoObjects при клике на Кластер созданный через objectManager, нигде не мог найти, поиск по документации давал только рекомендации для Clusterer. Но вот чудо, по запросу: "objectManager клик по кластеру" я попал на toster, а из тостера сюда =) спасибо большое !!! выручили