0

我正在使用 Google 地图 API (v2) 在世界地图上显示国家叠加层。数据来自 KML 文件,其中包含多边形的坐标以及每个国家/地区的 HTML 描述。单击该国家/地区时,此说明会显示在“信息窗口”对话气泡中。

最初我遇到了一些麻烦,因为信息窗口没有扩展到它们包含的 HTML 内容的大小,所以较长的窗口会溢出边缘(这似乎是一个常见问题)。我可以通过将信息窗口重置为特定高度来解决此问题,如下所示:

GEvent.addListener(map, "infowindowopen", function(iw) { iw = map.getInfoWindow(); iw.reset(iw.getPoint(), iw.getTabs(), new GSize(300, 295), null, null); });

不理想,但它有效。然而现在,当信息窗口打开时,它们的顶部有时会被地图的边缘遮挡,因为地图不会平移到可以查看所有内容的位置。

所以我的问题:

  1. 有没有办法让信息窗口自动使用适合其内容的高度,以避免必须固定到设定的像素高度?

  2. 如果固定高度是唯一的选择,有没有办法让地图在信息窗口打开时平移到更合适的位置?我知道地图类有一个 panTo() 方法,但我看不到计算正确坐标的方法。

这是我的完整初始化代码:

google.load("maps", "2.x");

// Call this function when the page has been loaded
function initialize() {
  var map = new google.maps.Map2(document.getElementById("map"), {backgroundColor:'#99b3cc'});

  map.addControl(new GSmallZoomControl());

  map.setCenter(new google.maps.LatLng(29.01377076013671, -2.7866649627685547), 2);

  gae_countries = new GGeoXml("http://example.com/countries.kmz");
  map.addOverlay(gae_countries);

  GEvent.addListener(map, "infowindowopen", function(iw) { iw = map.getInfoWindow(); iw.reset(iw.getPoint(), iw.getTabs(), new GSize(300, 295), null, null); });
}
google.setOnLoadCallback(initialize);
4

1 回答 1

0

我最终通过删除我的调整大小侦听器并在气球的开头添加一些文本来解决这个问题,然后使用 CSS 将其隐藏。需要一些试验和错误才能获得正确的高度。这不是一个理想的解决方案,但它会在未来版本的 API 提供更多控制之前工作。

于 2010-05-28T09:03:15.930 回答