2011-05-13 232 views
5

我試圖在'clusterclick'事件中向infoCluster添加一個infoBubble,但是infoBubble.Open方法要求綁定一個'marker'參數。問題是markerCluster不是google.maps.Point,因此不可能將infoBubble綁定到它。google maps api v3 + infoBubble in markerClusterer

我將markerCluster的位置分配給了infoBubble,但是infoBubble在新位置重新繪製,將標記從其位置移開。

有沒有人有同樣的問題?有沒有修改原始infoBubble代碼的解決方案?

http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobubble/

回答

6

解決問題1: 標記參數是可選的,如果我根本不會分配給它,問題就解決了。

用途:

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

不:

infoBubble.open(map, marker); 

問題2:但是現在infoBubble出現在市場上,有沒有動起來的方式?

解決問題2

我修改了InfoBubble源代碼包含一個offsetParameter然後在繪製函數中添加像素:

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

萬一有人有同樣的問題

1

將此添加到第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); 
+0

將其更改爲top + =和left + =更有意義。 [-10,-10]會向左移動。 [10,10]會向右移動。否則,很好的解決方案 – 2017-09-25 18:28:13