如何从SQL API代码迁移到Google Fusion Table API v1
我有一个使用以前的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);
}
});
}
的queryUrlHead必须是 'https://www.googleapis.com/fusiontables/v1/query?sql='
而且,你不需要在queryUrlTail一个JSON回调,因为新API将默认返回json。
有几个不同:
- 不同URL(
https://www.google.com/fusiontables/api/
VShttps://www.googleapis.com/fusiontables/v1
) - JSONP VS JSON JSON对象的
- 结构返回
- API 1.0版需要安装在一个ApiKey URL
- API v1.0可能有一些错误需要解决(例如NaN与结果中的数字)
SQL API示例
它返回这个JSON:
onResponse({
"table":{"cols":["ETHUN","count()"],
"rows":[
["1",3308],
["2",18702],
["-9",10768]
]}
})
谷歌融合表API 1.0版实施例
注意我没有在上面的查询中包含我的API密钥,假设公开发布它不是一个好主意。所以上面的链接可能会返回一个关键丢失的投诉。但随着有效的API密钥返回查询它下面的JSON:
返回此对象:
{
"kind": "fusiontables#sqlresponse",
"columns": [ "ETHUN", "count()" ],
"rows": [
[ NaN, "3308" ],
[ NaN, "18702" ],
[ NaN, "10768" ]
]
}
我需要什么在这个(下面)中更改以获取JSON结果并显示它? $阿贾克斯({ 类型: “GET”, 网址:queryurl, 数据类型: “JSONP”, 成功:dataHandlerCallback, 错误:函数(){ 警报( “AJAX错误” + queryurl); } }); – mmittal 2012-08-06 17:10:32
没有经过测试,我相信你会像使用GET请求一样使用dataType =“json”(而不是“jsonp”),并且包含你的api密钥。 – prototype 2012-08-07 04:16:17
无法正常工作。我尝试了所有组合。你可以给我的代码工作的例子 – mmittal 2012-08-08 16:41:59
地图显示出来,表中显示,但JSON结果没有显示,返回AJAX错误 – mmittal 2012-08-06 17:02:17