-1

我创建了一个带有标记和自定义信息窗口的自定义谷歌地图。想要标记下方的信息窗口而不是顶部。我通过定位信息窗口的纬度和经度来实现这一点。但是我在google api中遇到了pixeloffset属性,但它不起作用。我用了

var infoBubble = new InfoBubble({
map: map,
content: '<div>Some label</div>',
position: new google.maps.LatLng(26.890076,75.755000),
shadowStyle: 1,
padding: 0,
backgroundColor: 'rgb(57,57,57)',
borderRadius: 4,
arrowSize: 0,
borderWidth: 1,
borderColor: '#2c2c2c',
disableAutoPan: true,
hideCloseButton: true,
pixelOffset: new google.maps.Size(-100,0)
});
infoBubble2.open(map,marker);
4

1 回答 1

5

InfoBubble不是 a 的实现,没有 a的google.maps.InfoWindow属性。pixelOffsetInfoBubble

但只需要对 infobubble.js 进行一些小的更改即可应用此功能。

打开 infobubble.js(未编译版本)并找到此代码(在绘图函数内):

  // Adjust for the height of the info bubble
  var top = pos.y - (height + arrowSize);

  if (anchorHeight) {
    // If there is an anchor then include the height
    top -= anchorHeight;
  }

  var left = pos.x - (width * arrowPosition);

应用这些更改:

  if(!this.pixelOffset
      || !this.pixelOffset.constructor
         || this.pixelOffset.constructor !== google.maps.Size){
    this.pixelOffset = new google.maps.Size(0,0);
  }
  // 调整信息气泡的高度
  var top = pos.y - (height + arrowSize) + this.pixelOffset.height ;

  如果(锚高){
    // 如果有锚点,则包括高度
    顶部 -= 锚高度;
  }

  var left = pos.x - (width * arrowPosition) + this.pixelOffset.width ;

 
于 2013-09-22T21:10:53.303 回答