我正在尝试查询表格以显示包含用户输入的文本的任何位置。因此,如果用户搜索“罗马”,则显示罗马格鲁吉亚和罗马意大利以及包含“罗马”的任何其他位置。非常基本。
searchVal是否需要在引号中导致其字符串? (比如:'searchVal')。因此下面注释掉的部分如下所示:layer.setQuery("SELECT * FROM '853697' WHERE Location CONTAINS '" + searchVal + "'");
此外,我将此查询切换为使用数字,但我仍然没有运气......
这是我的代码:
function initTourMap() {
var nAtlantic = new google.maps.LatLng(31.295359681447383, -53.95838070000002);
var map = new google.maps.Map(document.getElementById('map_canvas'), {
center: nAtlantic,
zoom: 3,
mapTypeId: 'hybrid'
});
var layer = new google.maps.FusionTablesLayer({
query: {
select: 'Location',
from: '853697',
where: 'Nmbr contains 8',
},
});
$("#submitSearch").click(function(){
var searchVal = $("#Search").val();
alert(searchVal);
//layer.setQuery("SELECT * FROM '853697' WHERE Location CONTAINS searchVal"); //search user's input
layer.setQuery("SELECT * FROM '853697' WHERE Nmbr CONTAINS 4");
layer.setMap(map);
});
layer.setMap(map);
//END initTourMap() FUNCTION
}
答案 0 :(得分:0)
您可以在此处详细了解: http://code.google.com/apis/maps/documentation/javascript/layers.html#FusionTablesQueries 我在你的例子中看到了几个问题。表id是一个整数,不应该引用。 searchVal必须在它是一个字符串时引用,但在它是一个数字时不引用。 CONTAINS是一个字符串运算符,不适用于数字。您可以使用=或> =等。只有列名称包含空格时才必须引用它们。
最后,不推荐使用layer.setQuery(),虽然它仍然有效但你应该使用layer.setOption({query:...})。我在单个应用程序中组合这两种方法时遇到了问题。