google maps api v3 + infoBubble в маркере кластера - PullRequest
5 голосов
/ 13 мая 2011

Я пытался добавить infoBubble к markerCluster в событии 'clusterclick', но метод infoBubble.Open запрашивает параметр 'marker' для привязки. Проблема в том, что markerCluster не является google.maps.Point, поэтому невозможно связать с ним информационный пузырь.

Я назначил возможность markerCluster для infoBubble, но infoBubble перерисовывается в новой позиции, перемещая маркер от его возможности.

У кого-нибудь была такая же проблема? Есть ли решение без изменения исходного кода infoBubble?

http://google -maps-utility-library-v3.googlecode.com / SVN / багажник / infobubble /

Ответы [ 2 ]

6 голосов
/ 25 мая 2011

Решение задачи 1: Параметр маркера был необязательным Если я просто никогда не назначал его, проблема решена.

Использование:

infoBubble.setPossition(latLng);
infoBubble.open(map);

Не:

infoBubble.open(map, marker);

Проблема 2: Но теперь информационный пузырь появляется над рынком, есть ли способ продвинуть его вверх?

Решение задачи 2 :

Я изменил исходный код InfoBubble, чтобы он содержал offsetParameter, а затем добавил пиксели в функцию рисования:

InfoBubble.prototype.PIXEL_OFFSET = 0
...
var top = pos.y - (height + arrowSize); if (anchorHeight) { top -= anchorHeight; } top -= this.PIXEL_OFFSET

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

1 голос
/ 21 марта 2013

Добавьте это в строку 93 (под полями других опций)

if (options['pixelOffset'] == undefined) {
    options['pixelOffset'] = this.PIXEL_OFFSET_;
}

Вокруг строки 182 добавить это

InfoBubble.prototype.PIXEL_OFFSET_ = [0.0];

Вокруг строки 908 добавить следующее:

top -= this.get('pixelOffset')[1];  // Add offset Y.
left -= this.get('pixelOffset')[0]; // Add offset X.

Над линиями должны быть размещены выше:

this.bubble_.style['top'] = this.px(top);
this.bubble_.style['left'] = this.px(left);

Теперь в вашей конструкции для вариантов вы можете сделать

var popupWindowOptions = {
    backgroundColor: '#2B2B2B',
    arrowStyle: 0,
    pixelOffset: [0,16]
 };

 this.popupWindow = new InfoBubble(popupWindowOptions);
...