2012-06-08 68 views
0

我正在構建一個Web應用程序,該應用程序包含一個Google Map,其中包含Google Fusion Table中的數據。我已經爲融合表中的標記定義了信息窗口,並且所有信息都按預期呈現,但我遇到了一個問題。我需要從我的Web應用程序傳遞一個會話變量,將其包含在信息窗口中定義的鏈接中,但似乎無法找到實現此目的的方法。下面是我目前使用的呈現地圖的JavaScript:將變量傳遞給FusionTableLayer中的Info窗口

var myOptions = { 
    zoom: 10, 
    mapTypeId: google.maps.MapTypeId.ROADMAP, 
    center: new google.maps.LatLng(40.4230,-98.7372) 
} 
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

// Weather 

weatherLayer = new google.maps.weather.WeatherLayer({ 
    temperatureUnits: google.maps.weather.TemperatureUnit.FAHRENHEIT 
}); 
weatherLayer.setMap(map); 

//Hobby Stores 

var storeLayer = new google.maps.FusionTablesLayer({ 
    query: { select: "col2", from: "3991553" }, 
    map: map, 
    supressInfoWindows: true 
}); 

//Club Sites 

var siteLayer = new google.maps.FusionTablesLayer({ 
    query: { select: "col13", from: "3855088" }, 
    styles: [{ markerOptions: { iconName: "airports" }}], 
    map: map, 
    supressInfoWindows: true 
}); 

我希望能夠通過某種類型的參數在傳遞一個值將被包括在調用google.maps.FusionTableLayer信息窗口,但無法找到一個方法來做到這一點。

要查看實際頁面,請訪問www.dualrates.com。輸入您的郵政編碼並選擇其中一個機場標記以查看信息窗口。您可能需要縮小地圖以查看機場。

+0

你有supressInfoWindows:true,這意味着你正在創建和填充infoWindow,而不是Fusion Table。如果你的頁面中有會話變量,你應該可以在窗口創建或打開時添加它。 –

回答

1

這個例子顯示瞭如何自定義信息窗口內容:

https://developers.google.com/fusiontables/docs/samples/change_infowindow_content

你會更新以下功能,包括特定表的信息,並添加會話變量。假設你使用的是PHP,它可能看起來像這樣:

google.maps.event.addListener(layer, 'click', function(e) { 

    // Change the content of the InfoWindow 
    e.infoWindowHtml = e.row['Store Name'].value + "<br>"; 

    // If the delivery == yes, add content to the window 
    if (e.row['delivery'].value == 'yes') { 
    e.infoWindowHtml += "Delivers!"; 
    } 

    e.infoWindowHtml += "<?php echo $_SESSION['yourvariable']; ?>"; 
});