如何在Google FusionTables中设置查询 - 特别是对于文本值查询?

时间:2011-06-16 06:19:31

标签: text google-fusion-tables

我正在尝试查询表格以显示包含用户输入的文本的任何位置。因此,如果用户搜索“罗马”,则显示罗马格鲁吉亚和罗马意大利以及包含“罗马”的任何其他位置。非常基本。

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
}

1 个答案:

答案 0 :(得分:0)

您可以在此处详细了解: http://code.google.com/apis/maps/documentation/javascript/layers.html#FusionTablesQueries 我在你的例子中看到了几个问题。表id是一个整数,不应该引用。 searchVal必须在它是一个字符串时引用,但在它是一个数字时不引用。 CONTAINS是一个字符串运算符,不适用于数字。您可以使用=或> =等。只有列名称包含空格时才必须引用它们。

最后,不推荐使用layer.setQuery(),虽然它仍然有效但你应该使用layer.setOption({query:...})。我在单个应用程序中组合这两种方法时遇到了问题。