2

我试图弄清楚如何使用新的 Fusion Table API v1 从 Javascript 函数中查询表。我希望能够逐行遍历结果,并在执行过程中执行其他操作(在本例中为地理编码地址)。

我的查询语法正常。当我将 http 粘贴到浏览器中时,它会返回正确的结果。

我想不通的是如何首先提出请求,并在我可以使用的地方得到结果。

这篇文章接近我想做的,但它使用旧的 API:http ://www.reddmetrics.com/2011/08/10/fusion-tables-javascript-query-maps.html

function getData() {
    // Builds a Fusion Tables SQL query and hands the result to  dataHandler

    var queryUrlHead = 'https://www.googleapis.com/fusiontables/v1/query?sql=';
    var queryUrlTail = '&key={my key}';
    Table = {my table id};

    // write your SQL as normal, then encode it
    var query = "SELECT Address, Name FROM " + Table + " LIMIT 5";
    var queryurl = encodeURI(queryUrlHead + query + queryUrlTail);

    var jqxhr = $.get(queryurl, dataHandler, "jsonp");
}

也许新的api不需要jquery?

4

1 回答 1

1

您提供的代码没问题,它按预期工作(对我来说)。我创建了一个jsFiddle 来向您展示它的示例用法

您需要做的就是指定一个名为的函数dataHandler,因为这是您告诉 jQuery 用作回调的函数。即 jQuery 调用的结果是,它调用了您指定的函数。

首先,我建议您公开 Fusion Table。这样您就可以探索 API 的使用,而不必担心身份验证等问题。

function dataHandler(response) {
    console.log(response);
    //do something with the data using response.rows
}

function getData() {
    // Builds a Fusion Tables SQL query and hands the result to  dataHandler

    var queryUrlHead = 'https://www.googleapis.com/fusiontables/v1/query?sql=';
    var queryUrlTail = '&key={my key}';
    Table = {my table id};

    // write your SQL as normal, then encode it
    var query = "SELECT Address, Name FROM " + Table + " LIMIT 5";
    var queryurl = encodeURI(queryUrlHead + query + queryUrlTail);

    var jqxhr = $.get(queryurl, dataHandler, "jsonp");
}

如果您只是console.log用来分析从 Fusion Tables 获得的响应(F12在浏览器中按下以打开控制台/开发人员工具),您会看到您获得了一个带有 acolumns和 arows属性的对象,就像您可以按照自己的方式使用数据一样喜欢。我上面的示例只是打印检索数据的 HTML 表。

如果您的查询有错误或无法访问,error则使用相应的错误消息设置属性。

于 2013-08-04T12:31:36.070 回答