0

我期待的結果,以瞭解如何更新從Fusion Tables的一個jqGrid的表(FT) -更新的jqGrid表融合表的查詢在谷歌地圖V3頁

在現階段,我可以搜索或滾動一個谷歌地圖,發送一個事件偵聽器,編譯視口/地圖的空間界限的金融時報查詢,以獲得一組新的結果。 我想要使用新的FT查詢字符串(或者可以使用Google代碼來檢索數據 - query.send(getData);)以使用新值更新jqGrid表。

在我開始使用jqGrid之前,我嘗試了/使用Google Visualization API,其中一些代碼如下所示。任何人都可以建議如何從table.draw,加載/重新加載jqGrid表?提前致謝。

function tilesLoaded() { 
     google.maps.event.clearListeners(map, 'tilesloaded'); 
     google.maps.event.addListener(map, 'zoom_changed', getSpatialQuery); 
     google.maps.event.addListener(map, 'dragend', getSpatialQuery); 
     getSpatialQuery(); 
    } 

    function getSpatialQuery() { 
     sw = map.getBounds().getSouthWest(); 
     ne = map.getBounds().getNorthEast(); 
     var spatialQuery = "ST_INTERSECTS(latitude, RECTANGLE(LATLNG(" + sw.lat() + "," + sw.lng() + "), LATLNG(" + ne.lat() + "," + ne.lng() + ")))"; 

     changeDataTable(spatialQuery); 
    } 

function changeDataTable(spatialQuery) { 
    var whereClause = ""; 
    if(spatialQuery) { 
    whereClause = " WHERE " + spatialQuery; 
    } 
    var queryText = encodeURIComponent("SELECT 'latitude', 'longitude', 'name' FROM xxxxxxxx" + whereClause + " LIMIT 50"); 
    var query = new google.visualization.Query('http://www.google.com/fusiontables/gvizdata?tq=' + queryText); 
    query.send(getData); 
} 

function getData(response) { 
    var table = new google.visualization.Table(document.getElementById('visualization')); 
    table.draw(response.getDataTable(), {showRowNumber: true}); 
} 

哦,我用奧列格代碼jqGrid returns blank cells作爲剛剛看到,如果我能得到一個簡單的多選表從我的FT提取數據的基礎 - 這與

簡單的MOD運行良好

網址:「http://www.google.com/fusiontables/api/query?sql=」 +

+0

在[瀏覽器](http://www.ok-soft-gmbh.com/jqGrid/google-tables.htm)中,您在哪個Web瀏覽器中有空單元格(http:// stackoverflow .COM /問題/ 4317646/jqGrid的-回報空白細胞/ 4326986#4326986)?由於安全問題,我在IE9以前遇到過這個問題,但現在都正常工作。 – Oleg

+0

啊對不起 - 也許我不明白引用你的好例子。如果我只想從Fusion Table源代碼獲取「靜態」表格,您的示例運行良好。我想要做的就是使用你的示例來說明如何從FT源創建表格,但是每次用戶移動/更新Google Map時都會更新表格。我試圖在Chrome,Firefox和IE9上使用本地文件 – JPMox

+0

對不起,我不知道Fusion Table足夠好用。有沒有API使用帶參數的URL來獲取您需要的JSON/JSONP格式的信息? – Oleg

回答

0

如果這可以幫助別人,我已經採取了一些我想出了代碼,並粘貼下面吧:

// You can get the map bounds via then pass it via a function (below is hacked from several functions 
sw = map.getBounds().getSouthWest(); 
ne = map.getBounds().getNorthEast(); 
var whereClause = "ST_INTERSECTS(latitude, RECTANGLE(LATLNG(" + sw.lat() + "," + sw.lng() + "), LATLNG(" + ne.lat() + "," + ne.lng() + ")))"; 

//construct the URL to get the JSON 
var queryUrlHead = 'http://www.google.com/fusiontables/api/query?sql='; 
var queryUrlTail = '&jsonCallback=?'; // 
var queryOrderBy = ' ORDER BY \'name\' ASC'; 
var queryMain = "SELECT * FROM " + tableid + whereClause + queryOrderBy + " LIMIT 100"; 
var queryurl = encodeURI(queryUrlHead + queryMain + queryUrlTail); 

//use the constructed URL to update the jqGrid table - this is the part that I didn't know in my above question 
$("#gridTable").setGridParam({url:queryurl}); 
$("#gridTable").jqGrid('setGridParam',{datatype:'jsonp'}).trigger('reloadGrid');