【问题标题】:Beginner fusion table query...two column location and st_distance初学者融合表查询...两列位置和st_distance
【发布时间】:2013-06-08 05:51:31
【问题描述】:

我正在更改一个 google 示例模板,以尝试构建一个查询,以查找表中离用户输入的城市最近的位置。在这个例子中,我只想输出 lat 和 lon,可能还有离用户输入的城市最近的桌子位置的“id”。首先,我使用我的 LATITUDE 列作为位置,因为它在表中已被地理编码为两列位置。奇怪的是,当我提醒那个变量时,它只显示纬度而不是纬度/经度坐标。我认为由于 LATITUDE 充当两列位置,因此它将返回 lat/lng。

所以当我在进入城市后按下“开始”按钮后运行这个简单的查询时:

 var queryList = [];
              queryList.push("SELECT LATITUDE,LONGITUDE FROM ");
              queryList.push(tableid);

然后在弹出窗口中提醒这些值,它工作正常:http://greenandtheblue.com/whentoplant/test_query_geocode.html,提醒表格中的纬度和经度......我希望它会。

但是当我尝试使用 st_distance 时,我没有得到任何关于它正在工作的建议。

queryList.push("ORDER BY ST_DISTANCE(LATITUDE, LATLNG("+coordinate.lat()+","+coordinate.lng()+")) LIMIT 1");

http://greenandtheblue.com/whentoplant/test_query_geocode_notworking.html

我更喜欢这种查询方法……看起来更简单:

query: {
            select: 'LATITUDE',
            from: tableid
          },

但我从示例中收集到,我需要将第二个查询(在我按下 go 时执行)放在一个排序数组中,这使得它有点复杂。

我希望这是一个足够清楚的问题。感谢您的帮助。

鲥鱼

【问题讨论】:

    标签: javascript sql select google-fusion-tables


    【解决方案1】:

    如果我这样查询:

    queryList.push("SELECT STATION,STATION_NAME,ELEVATION,LATITUDE FROM ");
    queryList.push(tableid);
     //query seems to work when I comment out the line below.
     queryList.push("ORDER BY ST_DISTANCE(LATITUDE, LATLNG("+coordinate.lat()+","+coordinate.lng()+")) LIMIT 1");
     var query = encodeURIComponent(queryList.join(' '));
     var gvizQuery = new google.visualization.Query(
        'http://www.google.com/fusiontables/gvizdata?tq=' + query);
    
     gvizQuery.send(function(response) {
        var datatable = response.getDataTable();
        var header = 'No results';
        var content = 'Sorry, no store delivers here.';
        if (datatable && (datatable.getNumberOfRows() > 0)) {
           header = datatable.getValue(0, 0);
           content = datatable.getValue(0, 1)+"<br>Station:"+datatable.getValue(0,0)+"<br>Elevation:"+datatable.getValue(0,2);
        }
        infoWindow.setContent('<h3>' + header + '</h3>' +
           '<p>' + content + '</p>');
        infoWindow.setPosition(coordinate);
        infoWindow.open(map);
      });
    

    给我works

    改变了:

    var query = encodeURIComponent(queryList.join(''));  // empty string
    

    到:

    var query = encodeURIComponent(queryList.join(' ')); // single space
    

    【讨论】:

    • 非常感谢!效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    相关资源
    最近更新 更多