Google Maps API V3 + Infobubble в маркеровщике
-
13-11-2019 - |
Вопрос
Я пытался добавить infobubble в маркеркустер в мероприятии «ClusterClick», но метод Infobubble.Open просит «Marker» параметр для привязки.Проблема в том, что маркеркластера не является Google.maps.point, поэтому не сможет связать infobubble к нему.
Я назначил возможность маркера ключа на Infobubble, но infobubble RedRaws в новой позиции перемещает маркер от его возможности.
У кого-нибудь была такая же проблема?Есть ли решение без модификации исходного кода infobubble?
http:// Google-maps-usive-библиотека-v3.googlecode.com/svn/trunk/infobbluble/
Решение
Использование:
infoBubble.setPossition(latLng);
infoBubble.open(map);
.
не:
infoBubble.open(map, marker);
.
Проблема 2: но сейчас infobubble появляется над рынком, есть ли способ переместить его вверх ??
Я модифицировал Infobubble SourceCode, чтобы содержать офсетпараметр, а затем добавлять пиксели в функции розыгрыша:
InfoBubble.prototype.PIXEL_OFFSET = 0
...
var top = pos.y - (height + arrowSize); if (anchorHeight) { top -= anchorHeight; } top -= this.PIXEL_OFFSET
.
на всякий случай, если у кого-то такая же проблема
Другие советы
Добавьте это к строке 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);
.