0

最近廃止された以前の SQL API を使用してビルドされた JavaScript Web マッピング アプリケーション コードがあります。また、JSON を使用して結果を返しました。ここで、新しいフュージョン テーブル API に移行したいと考えています。移行ガイドを読みましたが、意味がありません。何を変更すればよいか正確にはわかりません。1 つのマップに 2 つのテーブルがあるため、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);
   }
});
}
4

2 に答える 2

1

いくつかの違いがあります:

  • 別の URL ( https://www.google.com/fusiontables/api/ vs https://www.googleapis.com/fusiontables/v1)
  • JSONP と JSON
  • 返される JSON オブジェクトの構造
  • API v1.0 では、URL に ApiKey を添付する必要があります
  • 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]

    ]}
})

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" ]
 ]
}
于 2012-08-04T16:31:28.937 に答える
0

queryUrlHead は「https://www.googleapis.com/fusiontables/v1/query?sql=」である必要があります

また、新しい API はデフォルトで json を返すため、queryUrlTail で json コールバックは必要ありません。

于 2012-08-03T21:13:20.750 に答える