2010-04-06 119 views
0

我正在使用谷歌地圖API(v2)在世界地圖上顯示一個國家覆蓋。數據來自KML文件,該文件包含多邊形的座標以及每個國家的HTML描述。當該國家被點擊時,該描述顯示在「信息窗口」對話泡泡中。谷歌地圖API - 信息窗口高度和平移

我最初遇到了一些麻煩,因爲信息窗口沒有擴展到它們包含的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); 

回答

0

我最終通過刪除我的大小調整偵聽器,並添加了一些文本的氣球,然後將其用CSS隱藏的開始解決了這個。一些試驗和錯誤是需要得到正確的高度。不是一個理想的解決方案,但它會工作,直到API的未來版本提供更多的控制。