Google maps 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); });
理想的ではありませんが、うまくいきます。ただし、情報ウィンドウを開くと、すべてのコンテンツを表示できる位置に地図がパンされないため、情報ウィンドウの上部が地図の端で隠れることがあります。
だから私の質問:
設定されたピクセルの高さに固定する必要がないように、情報ウィンドウがコンテンツに適した高さを自動的に使用するようにする方法はありますか?
高さを固定することが唯一の選択肢である場合、情報ウィンドウが開いたときにマップをより適切な位置にパンする方法はありますか? 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);