2012-08-03 75 views
0

我有一个使用以前的SQL API构建的JavaScript Web应用程序代码,该代码最近已被废弃。我也用JSON来回报结果。现在我想迁移到新的融合表API。我已经通过了迁移指南,但没有任何意义。我不知道要改变什么。我在一张地图上有两个表格,所以有2个API键和2个表键。放置后没有地图显示。我也打开了控制台中的API。如何从SQL API代码迁移到Google Fusion Table API v1

var map; 
var queryUrlHead = 'http://www.google.com/fusiontables/api/query?sql='; 
var queryUrlTail = '&jsonCallback=?'; 

//url.push('&key=AIzaSyDbZCuKQMgxAMYUatCsohcJkVSXYKhrKAU'); 
//url.push('&key=AIzaSyBC6PHfBV6HogU1bGaC5edvM_EPvGpT56c'); 

var layer_1; 
var layer_2; 
//var tableid_1 = 3775630; 
//var tableid_2 = 4313734; 
var tableid_1 = 18nnNfr7P_eelXCCOsK-uOFnIWcR2ofIUGLUk4nk; 
var tableid_2 = 1mm0HGszLM3_flfblLnddnmvmQr02W-RwEGQxl2w; 


function initialize() { 
var latlng = new google.maps.LatLng(33.7071,-111.3024); 

map = new google.maps.Map(document.getElementById('map_canvas'), { 
    center: latlng, 
    zoom: 7, 
    mapTypeId: google.maps.MapTypeId.TERRAIN, 
    mapTypeControl: true, 
    mapTypeControlOptions: { 
    style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, 
    position: google.maps.ControlPosition.TOP_LEFT 
}, 
    scaleControl: true, 
    scaleControlOptions: { 
    position: google.maps.ControlPosition.BOTTOM_LEFT 
}, 

}); 
.... 
.... 
.... 
var layer_1 = new google.maps.FusionTablesLayer(tableid_1); 
.... 
.... 
var col_list = 'Name'; 

if(order_list && order_list !== 'Name') { 
    query += " ORDER BY " + order_list; 
} 

var queryurl = encodeURI(queryUrlHead + qry + queryUrlTail); 



$.ajax({ 
    type : "GET", 
    url : queryurl, 
    dataType : "jsonp", 
    success : dataHandlerCallback, 
    error : function() { 
     alert("AJAX ERROR for " + queryurl); 
    } 
}); 
} 

回答

0

的queryUrlHead必须是 'https://www.googleapis.com/fusiontables/v1/query?sql='

而且,你不需要在queryUrlTail一个JSON回调,因为新API将默认返回json。

+0

地图显示出来,表中显示,但JSON结果没有显示,返回AJAX错误 – mmittal 2012-08-06 17:02:17

1

有几个不同:

  • 不同URL(https://www.google.com/fusiontables/api/ VS https://www.googleapis.com/fusiontables/v1
  • JSONP VS JSON
  • JSON对象的
  • 结构返回
  • API 1.0版需要安装在一个ApiKey URL
  • API v1.0可能有一些错误需要解决(例如NaN与结果中的数字)

SQL API示例

https://www.google.com/fusiontables/api/query?sql=SELECT%20ETHUN,%20COUNT%28%29%20FROM%204579147%20GROUP%20BY%20ETHUN&alt=json-in-script&jsonCallback=onResponse

它返回这个JSON:

onResponse({ 
    "table":{"cols":["ETHUN","count()"], 
    "rows":[ 
     ["1",3308], 
     ["2",18702], 
     ["-9",10768] 

    ]} 
}) 

谷歌融合表API 1.0版实施例

https://www.googleapis.com/fusiontables/v1/query?sql=SELECT%20ETHUN%2C%20COUNT()%20%20FROM%201Nynh5pPrj1q8JqbalppAm-qzAsgKvL0ZRala7VI%20GROUP%20BY%20ETHUN&key=MyEncryptedAPIKey

注意我没有在上面的查询中包含我的API密钥,假设公开发布它不是一个好主意。所以上面的链接可能会返回一个关键丢失的投诉。但随着有效的API密钥返回查询它下面的JSON:

返回此对象:

{ 
"kind": "fusiontables#sqlresponse", 
"columns": [ "ETHUN", "count()" ], 
"rows": [ 
    [ NaN, "3308" ], 
    [ NaN, "18702" ], 
    [ NaN, "10768" ] 
] 
} 
+0

我需要什么在这个(下面)中更改以获取JSON结果并显示它? $阿贾克斯({ 类型: “GET”, 网址:queryurl, 数据类型: “JSONP”, 成功:dataHandlerCallback, 错误:函数(){ 警报( “AJAX错误” + queryurl); } }); – mmittal 2012-08-06 17:10:32

+0

没有经过测试,我相信你会像使用GET请求一样使用dataType =“json”(而不是“jsonp”),并且包含你的api密钥。 – prototype 2012-08-07 04:16:17

+0

无法正常工作。我尝试了所有组合。你可以给我的代码工作的例子 – mmittal 2012-08-08 16:41:59

相关问题