如何从SQL API代码迁移到Google Fusion Table API v1

How to migrate from SQL API code to Google Fusion Table API v1

本文关键字:API Google Fusion Table v1 代码 SQL 迁移      更新时间:2023-09-26

我有一个javascript web映射应用程序代码,它是使用以前的SQL API构建的,最近已被弃用。我还使用JSON返回结果。现在我想迁移到新的融合表API。我已经看过迁移指南,但它没有意义。我不知道该改变什么。我在一个映射上有两个表,所以有2个API键和2个表键。放置它们之后,就不会显示地图了。我还打开了控制台中的API。

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);
   }
});
}

有几个区别:

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

SQL API示例

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

返回此JSON:

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

Google Fusion Table API v1.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" ]
 ]
}

queryUrlHead需要为'https://www.googleapis.com/fusiontables/v1/query?sql='

此外,您不需要queryUrlTail中的json回调,因为新的API默认情况下将返回json。