Клуб API Карт

Два и более placemark'a расположенные на визуально неразличимой близости друг от друга

igor-glagola
12 октября 2012, 14:31

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

 

В виду спицифики моей предметной области, у меня может выйти так, что два и более placemark'a будут находится очень близко друг к другу, так что их даже на максимальном приближении не различишь(будем считать, что они вовсе имеют одинаковые координаты, хотя порой мизерное различие все-таки есть). Т.о. если на скопление placemark'ов навести мышкой, то отобразится только один балун относящийся к тому маркеру, на который навели, достучаться до других мышкой нереально.

Я так подозреваю, что нужно использовать кластеры, но вот что я заметил: если координаты маркеров отличаются совсем немного, то кластер не появляется, а если координаты маркеров совпадают, то появляется.

 

Так вот теперь у меня вопрос к знатокам: можно ли как-то заставить кластер объединять точки в каком-то радиусе, так чтоб даже при максимальном приближении, кликнув по нему можно было хотябы показать балун, со списком этих меток? Если да, то как?)

 

 

Спасибо

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

Воспользуйтесь кластеризатором.

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

Маловероятно, я на практике такого не встречал.

Вероятно это как раз то, о чем говорит qfox. Вот две координаты [59.1261, 31.69], [59.1261, 31.6901], при значении по-умолчанию gridSize и максимально доступном приближении кластеризатор не заменяет точки на кластер, они остаются наложены друг на друга, но стоит поменять значение gridSize, например, на 31 точки начинают сбиваться в кластер.

В рамках грид-кластеризации эта проблема, в общем-то, неразрешима. Здесь проще всего, наверное, подправить координаты близко стоящих объектов так, чтобы они были совсем одинаковы.

Скажите, а можно ли сделать кастомный балун для кластера?

Я так понимаю нужно использовать templateLayoutFactory, но как внутри тогоже build получить доступ к списку вершин, которые скрывает кластер?

Я уже сделал, возможно не очень правильно, так что буду рад любой критике:

clusterBalloonLayout = ymaps.templateLayoutFactory.createClass('', {

    build: function () {

        this.constructor.superclass.build.call(this)

 

        var placemarks = this.getData().cluster.getGeoObjects()

          , $cnt = $(this.getParentElement()).find('.balloon')

          , cntHtml = ''

 

        for(var i = 0, elem; i < placemarks.length; i++) {

            elem = placemarks[i] 

 

            cntHtml +=              

                '' + 

                    '' +

                        '' +

                    '' +

                    '' +

                        '' + elem.properties.get('title') + '' +

                    '' +

                ''

        }

 

        $cnt.html(cntHtml)

    }

})

 

Сейчас у меня другая проблема никак не удается избавиться от невидимого "хвостика" балуна, это как-то вообще можно сделать? Сейчас мой балун парит над кластером, а должен быть прям над ним

Сделали всё правильно.

Про хвост балуна не понял, можно скриншот, а лучше страницу с примером?

Вот так было, а хотелось чтобы было так.

Я уже решил проблему невидимого хвостика добавив в кластеризатор clusterBalloonOffset: [0, 27]