0

2つのフュージョンテーブルレイヤーを含むマップがありsuppressInfoWindows、ユーザーがもう一方のレイヤーのマーカーをクリックしたときに、一方のレイヤーの情報ウィンドウが開いたままにならないように使用しています。これは、以下のコードを使用して正常に機能します。

<script type="text/javascript">
var map;
var infowindow;

var layer;
var tableid = MY FUSION TABLE ID;

var layer2;
var tableid2 = MY FUSION TABLE ID;

function initialize() {

  map = new google.maps.Map(document.getElementById('map_canvas'), {
    center: new google.maps.LatLng(10, 30),
    zoom: 2,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  });

 infoWindow = new google.maps.InfoWindow();

 google.maps.event.addListener(map, "click", function() { infoWindow.close(); });

 layer = new google.maps.FusionTablesLayer(tableid, {suppressInfoWindows:true});
 layer.setQuery("SELECT 'Country Geometry' FROM " + tableid);
 layer.setMap(map);
 google.maps.event.addListener(layer, "click", openIW);

 layer2 = new google.maps.FusionTablesLayer(tableid2, {suppressInfoWindows:true});
 layer2.setQuery("SELECT 'Site Location' FROM " + tableid2);
 layer2.setMap(map);
 google.maps.event.addListener(layer2, "click", openIW);

}

function openIW(FTevent) {
  // infoWindow.setContent(FTevent.infoWindowHtml);
  // infoWindow.setPosition(FTevent.latLng);
  infoWindow.setOptions(
    { 
     content: FTevent.infoWindowHtml,
     position: FTevent.latLng,
     pixelOffset: FTevent.pixelOffset
    });

  infoWindow.open(map);
}

</script>

Fusion Tablesのinfowindow設定に依存するのではなく、どうすればカスタムhtmlをinfowindowに追加できますか?オプションを追加する前に使用していたコードはsuppressInfoWindows次のとおりですが、これを正しい形式で追加し直す方法がわかりません。また、異なるレイヤーの情報ウィンドウに異なるhtmlコードを使用することは可能ですか、それとも両方のレイヤーが同じ情報ウィンドウを使用する必要がありますか?ありがとう。

e.infoWindowHtml =  "<div id='SiteInfo' class='googft-info-window' style='font-family: sans-serif; width: 500px; height: 300px; overflow: auto;'>\
            <b>" + e.row['Site Name'].value + "</b><br />\
            </div></div>";
4

1 に答える 1

0

これに関するあなたの最後の質問に対する私の答えの私の例を見てください。

2つのレイヤー、1つの情報ウィンドウを含むマップの例

実装する:

  1. 両方のレイヤーの情報ウィンドウを抑制します
  2. いずれかのレイヤーがクリックされたときに共有情報ウィンドウを開くコードを記述します。
于 2012-08-20T17:21:12.527 に答える