google maps api v3 + infoBubble在markerClusterer中

时间:2011-05-13 19:52:51

标签: google-maps google-maps-api-3 markerclusterer

我试图在'clusterclick'事件中将一个infoBubble添加到markerCluster,但是infoBubble.Open方法要求绑定一个'marker'参数。问题是markerCluster不是google.maps.Point所以将infoBubble绑定到它是不可能的。

我将markerCluster的标记分配给了infoBubble,但是infoBubble重新绘制了新位置,从而将标记从其位置移开。

有没有人有同样的问题?有没有修改原始infoBubble代码的解决方案?

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

2 个答案:

答案 0 :(得分:6)

解决方案问题1: 标记参数是可选的如果我只是从不分配它,问题就解决了。

使用:

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

infoBubble.open(map, marker);

问题2:但是现在infoBubble出现在市场上,有没有办法将其提升?

解决方案问题2

我修改了InfoBubble sourceCode以包含offsetParameter,然后在draw函数中添加像素:

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

以防有人遇到同样的问题

答案 1 :(得分: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);