0

ユーザーが入力したテキストを含む場所を表示するためにテーブルをクエリしようとしています。したがって、ユーザーが「Rome」を検索すると、「Rome」を含むその他の場所とともに、Rome Georgia と Rome Italy が表示されます。かなり基本的です。

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:...}) を使用する必要があります。1 つのアプリケーションで 2 つの方法を組み合わせることに問題がありました。

于 2012-03-01T11:17:19.840 に答える