1

我正在更改一个谷歌示例模板,以尝试构建一个查询,以查找表中离用户输入的城市最近的位置。在这个例子中,我只想输出 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 时执行)放在一个排序数组中,这使得它有点复杂。

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

鲥鱼

4

1 回答 1

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

它对我有用

改变:

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

到:

var query = encodeURIComponent(queryList.join(' ')); // single space
于 2013-05-06T12:49:50.447 回答