2011-06-16 14 views
0

我想查詢表格以顯示包含用戶輸入的文本的任何位置。因此,如果用戶搜索「羅馬」,則會顯示羅馬格魯吉亞和羅馬意大利以及包含「羅馬」的任何其他位置。很基本。如何在Google FusionTables中設置查詢 - 特別是對於文本值查詢?

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

您可以在這裏閱讀更多關於此: http://code.google.com/apis/maps/documentation/javascript/layers.html#FusionTablesQueries 我在您的示例中看到了幾個問題。表ID是一個整數,不應該引用。當它是一個字符串時,searchVal必須被引用,但是當它是一個數字時,不會引用它。 CONTAINS是一個字符串運算符,不能與數字一起使用。您可以使用=或> =等。只有列名包含空格時,才能引用列名。

最後,layer.setQuery()已棄用,雖然它仍然有效,但應使用layer.setOption({query:...})。在單個應用程序中組合這兩種方法時遇到問題。

相關問題