Как вы устанавливаете запросы в Google FusionTables - особенно для запросов с текстовыми значениями? - PullRequest
0 голосов
/ 16 июня 2011

Я пытаюсь запросить таблицу, чтобы показать любое место, содержащее текст, введенный пользователем. Таким образом, если пользователь ищет «Рим», «Рим», «Грузия» и «Рим Италия» отображаются вместе с любым другим местоположением, содержащим «Рим». Довольно простой.

Требуется ли 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 голосов
/ 01 марта 2012

Подробнее об этом можно прочитать здесь: http://code.google.com/apis/maps/documentation/javascript/layers.html#FusionTablesQueries Я вижу пару проблем в вашем примере. Идентификатор таблицы является целым числом и никогда не должен заключаться в кавычки. searchVal должен быть заключен в кавычки, когда это строка, но не должен заключаться в кавычки, когда это число. CONTAINS является строковым оператором и не будет работать с числами. Вы можете использовать = или> = и т. Д. Имена столбцов должны заключаться в кавычки, только если они содержат пробелы.

Наконец, layer.setQuery () устарела, и пока он все еще работает, вы должны использовать layer.setOption ({query: ...}). У меня были проблемы с объединением двух методов в одном приложении.

...