0

感謝所有幫助我學習到目前爲止!Fusion Tables&Map w/sidebar:從數字到加密ID在非洲地圖樣本

我不得不根據客戶的反饋來改變我以前的地圖,現在我試圖重新以下API v3示例:Fusion Tables圖層例如從@geocodezip:

http://www.geocodezip.com/v3_FusionTables_AfricaMap_kml_sidebar.html

我已仔細複製並粘貼並將原始代碼更改爲我的頁面,但我遇到了以下問題:

a。)infoWindows未被壓縮,並且未創建新的;

b)單擊邊欄中的項目對地圖沒有影響。

我的猜測是它與新的查詢語法和加密ID有關,而示例代碼(非洲地圖)則基於數字ID。我想我已經把它弄糊塗了。

我的問題是:如何更改/更新我的代碼以使我的地圖功能像非洲地圖示例一樣?謝謝!

我的地圖:http://hepac.ca/map/

我融合表:https://www.google.com/fusiontables/data?docid=1DxjRqzjtC7-Oryt8N9ZaJ0n1IXRllDjodnbEJYo

我認爲是相關代碼:

function createSidebar() { 
    // https://www.google.com/fusiontables/api/query?sql=SELECT%20ROWID,%20%2A%20FROM%20564705 

    //set the query using the parameter 
    var queryText = encodeURIComponent("http://www.google.com/fusiontables/gvizdata?tq=SELECT * FROM 1DxjRqzjtC7-Oryt8N9ZaJ0n1IXRllDjodnbEJYo"); 
    var query = new google.visualization.Query(queryText); 
    var queryText = encodeURIComponent("SELECT 'Description', 'Network', 'Contact', 'Email', 'Latitude', 'Longitude' FROM 1DxjRqzjtC7-Oryt8N9ZaJ0n1IXRllDjodnbEJYo"); 
    var query = new google.visualization.Query('http://www.google.com/fusiontables/gvizdata?tq=' + queryText); 


    //set the callback function 
    query.send(getData); 

} 

和:

layer = new google.maps.FusionTablesLayer({ 
     query: { 
     select: "col2", 
     from: "1DxjRqzjtC7-Oryt8N9ZaJ0n1IXRllDjodnbEJYo", 
     where: "" 
     }, 
     suppressInfoWindows: true 
    }); 

    layer.setMap(map); 
+0

首先解決您的JavaScript錯誤:'警告:您已經在此頁面上多次包含Google Maps API。這可能會導致意外的錯誤。 main.js:90'.'Uncaught錯誤:列索引無效6.應該是[0-5]範圍內的整數。格式+ EN,默認,geomap,表,corechart.I.js:60' – geocodezip

+0

好吧,就可以了。將更新。 – SPS

+0

@geocodezip:您使用哪種工具來處理javascript錯誤?我正在嘗試JSlint。 – SPS

回答

0

infoWindows被壓制。有一個在你的代碼中的「點擊」監聽器會導致顯示他們:

google.maps.event.addListener(layer, "click", function(event) { 
    infoWindow.close(); 
    infoWindow.setContent(event.infoWindowHtml); 
    infoWindow.setPosition(event.latLng); 
    infoWindow.open(map); 
    }); 
+0

明白了,謝謝! – SPS

0

我的JavaScript錯誤似乎與我是從融合表調用列數。使這些修復和它的工作原理確定:

var queryText = encodeURIComponent("SELECT 'Description', 'Network', 'Contact', 'Website', 'Email', 'Latitude', 'Longitude' FROM 1DxjRqzjtC7-Oryt8N9ZaJ0n1IXRllDjodnbEJYo"); 

,後來:

function myFTclick(row) { 
    var Description = FTresponse.getDataTable().getValue(row,0); 
    var Network = FTresponse.getDataTable().getValue(row,1); 
    var Contact = FTresponse.getDataTable().getValue(row,3); 
    var Email = FTresponse.getDataTable().getValue(row,4); 
    var lat = FTresponse.getDataTable().getValue(row,5); 
    var lng = FTresponse.getDataTable().getValue(row,6); 
    var position = new google.maps.LatLng(lat, lng); 

我能得到它通過與列值打運行 - 例如,.getValue(行,X) - 雖然我不知道如何找到「x」的正確數值。我通過試驗和錯誤做到了。

+0

列號由查詢'var queryText = encodeURIComponent(「SELECT'Description','Network','Contact','Website','Email','Latitude','Longitude'FROM 1DxjRqzjtC7-Oryt8N9ZaJ0n1IXRllDjodnbEJYo」)定義。 ;',第0列是Decription,第1列是Network等。 – geocodezip

+0

當然! :) 再次感謝。我試圖將其恢復到原始的Fusion Table。 – SPS