在谷歌地图中设置信息窗口位置

Setting InfoWindow Postion in Google Maps

本文关键字:信息窗 窗口 位置 信息 设置 谷歌地图      更新时间:2023-09-26

我正在谷歌地图上绘制一组多边形,并希望在单击它时在每个多边形的中心弹出一个信息窗口。

function attach_info_window(polygon, centroid, title){
    var info_window = new google.maps.InfoWindow({
      content: title,
      position: { lat: centroid[0], lng: centroid[1] }
    });
    google.maps.event.addListener(polygon, 'click', function() {
      info_window.open(map, this);
    });
  }

问题是,窗口每次都出现在西北角。"位置"参数似乎被完全忽略了。我还尝试在单击时设置位置

event.latLng

但是,即使 API 文档指定了它,也会返回未定义的内容,因此这也不起作用。奇怪的是,如果我使用标记而不是多边形,它就可以正常工作。

我通过删除 open() 中的第二个参数来解决这个问题

info_window.open(map)

效果很好。我传递"this"是为了将其绑定到许多多边形中的特定多边形。我仍然不明白为什么这有效,也不是

info_window.open(map, poly)

也不

info_window.open(map, this)

工程

这个:

info_window.open(map, this);

除了google.maps.Marker之外,不会为任何东西工作。 InfoWindow.open 的第二个参数只能是 google.maps.Marker,Polygon 或 Polyline 在那里不起作用。

从文档中"在核心API中,唯一的锚点是Marker类。但是,锚点可以是任何公开 LatLng 位置属性的 MVCObject"