我正在修改一个google示例模板,尝试构建一个查询,该查询在表中找到用户输入城市的最近位置。在这个例子中,我只想将lat和lon以及最近的表位置的“id”输出到用户输入的城市。首先,我使用我的LATITUDE列作为位置,因为它已在表格中以两列位置进行地理编码。奇怪的是,当我提醒该变量时,它只显示纬度而不是纬度/经度坐标。我认为自从LATITUDE充当两列位置后,它将返回一个纬度/经度。
所以当我在进入城市后按下“开始”按钮后运行这个简单的查询时:
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
},
但是我从示例中收集到了我需要将第二个查询(当我推送时执行时)放在一个排序数组中,这使得它更复杂。
我希望这是一个足够明确的问题。谢谢你的帮助。
沙德
答案 0 :(得分: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