0

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

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
}
4

1 回答 1

0

您可以在此处阅读有关此内容的更多信息: http ://code.google.com/apis/maps/documentation/javascript/layers.html#FusionTablesQueries 我在您的示例中看到了几个问题。表 id 是一个整数,不应该被引用。searchVal 在为字符串时必须加引号,但在为数字时不加引号。CONTAINS 是一个字符串运算符,不适用于数字。您可以使用 = 或 >= 等。只有当列名包含空格时,才必须引用它们。

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

于 2012-03-01T11:17:19.840 回答