3

tabber.jsを使用してInfoWindowsにタブを追加しています。次のコードを使用して、InfoWindowのDOMの準備ができた後にタブがレンダリングされるようにします。

infowindow.id = marker.markerid;
infowindow.open(map, marker);

google.maps.event.addListener(infowindow, 'domready', function () {
    tabberAutomatic({div: document.getElementById(marker.markerid)});
});

Google Maps APIを使用すると、インフォウィンドウの高さは、DOMの準備ができたときではなく、インフォウィンドウが開いたときにコンテンツから自動的に計算されます。その結果、高さは基本的に各タブのすべてのコンテンツの高さの合計であるため、インフォウィンドウは本来のサイズの約2倍になります。タブがレンダリングされると、情報ウィンドウに多くの空白が残ります。

したがって、私がする必要があるのは、タブがレンダリングされた、InfoWindowに高さを再計算させることです。これは可能ですか?

更新このフィドルは私の問題を示しています。この状況でインフォウィンドウに高さを正しく計算させるにはどうすればよいですか?インフォウィンドウのコンテンツは動的に生成されるため、maxHeightまたは同等のものを明示的に設定することはできません。

4

1 に答える 1

3

次の手順で問題を解決しました。

  1. 'html:'プロパティを使用して、マーカーオブジェクトのHTMLコンテンツを宣言しました
  2. 実際のコンテンツを設定する前に、空のオーバーレイを作成しました
  3. クリックイベントのオーバーレイコンテンツを更新し、その後tabberAutomaticを初期化しました

ここでライブの例を見ることができます:

http://jsfiddle.net/alexcastillo/af6bs/

複数のマーカーの場合:

http://jsfiddle.net/alexcastillo/Gk7AM/

ノート:

  1. 空のオーバーレイは、ループの外側に作成する必要があります。
  2. domreadyイベントでtabberAutomatic関数を実行する必要はありません。

一番、

于 2012-10-15T19:24:49.600 に答える