代码之家  ›  专栏  ›  技术社区  ›  Tim Fountain

谷歌地图API-信息窗口高度和平移

  •  0
  • Tim Fountain  · 技术社区  · 16 年前

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

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

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

    1. 如果固定高度是唯一的选择,有没有办法让地图在信息窗口打开时平移到更合适的位置?我知道map类有一个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);
    
    1 回复  |  直到 16 年前
        1
  •  0
  •   Tim Fountain    16 年前

    我最终解决了这个问题,删除了我的resizelistener,并在气球的开头添加了一些文本,然后用CSS隐藏了这些文本。需要反复试验才能确定正确的高度。这不是一个理想的解决方案,但在API的未来版本提供更多的控制之前,它是可以工作的。