【问题标题】:fusion table autocomplete text search融合表自动完成文本搜索
【发布时间】:2023-04-08 12:05:01
【问题描述】:

我浏览了this link,它显示了一个带有自动完成搜索框的融合表地图图层。但是在这个例子中,只有前 500 行的融合表在自动完成中被索引。

在下方找到fiddle 以供参考。

  function initAutoComplete(tableId) {
    // Retrieve the unique store names using GROUP BY workaround.
    var queryText = encodeURIComponent(
        "SELECT 'FB_INDO_2000', COUNT() " +
        'FROM ' + tableId + " GROUP BY 'FB_INDO_2000'");
    var query = new google.visualization.Query(
        'http://www.google.com/fusiontables/gvizdata?tq='  + queryText);

    query.send(function(response) {
      var numRows = response.getDataTable().getNumberOfRows();

      // Create the list of results for display of autocomplete.
      var results = [];
      for (var i = 0; i < numRows; i++) {
        results.push(response.getDataTable().getValue(i, 0));
      }

      // Use the results to create the autocomplete options.
      $('#store').autocomplete({
        source: results,
        minLength: 2
      });
    });
  }

编辑:正如 geocodezip 所建议的,我通过将查询更改为 FT API v1 来更新我的 fiddle here

var queryText = encodeURIComponent(
        "SELECT 'FB_INDO_2000', COUNT() " + 'FROM ' + tableId + " GROUP BY 'FB_INDO_2000'");
     var queryUrlHead = 'https://www.googleapis.com/fusiontables/v1/query?sql=';
    var queryUrlTail = '&key=AIzaSyCAI2GoGWfLBvgygLKQp5suUk3RCG7r_ME';
    var query = new google.visualization.Query(queryUrlHead + queryText + queryUrlTail);

但无法实现自动完成。

【问题讨论】:

    标签: google-maps search autocomplete google-fusion-tables


    【解决方案1】:

    Google Visualization API is limited to 500 results from a FusionTable.

    使用FusionTables v1 API instead,没有这个限制。

    您的代码的工作版本:

    <script src="https://www.googleapis.com/fusiontables/v1/query?sql=SELECT%20'FB_INDO_2000'%20FROM%201E9BosnI16GISRmTBkINI2aWlYVdZae46v8jClAc%20GROUP%20BY%20'FB_INDO_2000'&callback=drawMap&key=AIzaSyCAI2GoGWfLBvgygLKQp5suUk3RCG7r_ME" type="text/javascript" ></script>
    
       function drawMap(response) {
          var numRows = response.rows.length;
    
          // Create the list of results for display of autocomplete.
          var results = [];
          for (var i = 0; i < numRows; i++) {
            results.push(response.rows[i][0]);
          }
    
          // Use the results to create the autocomplete options.
          $('#store').autocomplete({
            source: results,
            minLength: 2
          });
       };
    

    working fiddle

    【讨论】:

    • 我自己在这里将我的小提琴修改为 FT API v1:jsfiddle.net/HnwA2/3 但自动完成功能不起作用。我哪里错了?
    • 您没有正确使用 Fusion Tables v1 API(您仍在使用 google.visualization.Query 调用,您需要将其替换为等效的 v1 调用)。 example using FT v1 API
    • 用一个工作小提琴更新了我的答案(以及使其工作所需的代码)
    • 检查javascript控制台:Uncaught ReferenceError: queryresponse is not defined
    【解决方案2】:

    问题是您正在使用 Google Visualization API 来获取数据,并且它有 500 行的限制。通过 JSONP 的 FT 1.0 API 不像@Swires 指出的那样。 看这个例子:https://developers.google.com/fusiontables/docs/samples/basic_jsonp_request

    【讨论】:

    • 我自己在这里将我的小提琴修改为 FT API v1:jsfiddle.net/HnwA2/3 但自动完成功能不起作用。我哪里错了?
    猜你喜欢
    • 2012-03-20
    • 2018-02-05
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 2011-08-29
    相关资源
    最近更新 更多