Как создать более 1 выпадающего меню на одной и той же таблице / слое в Google Fusion Table? - PullRequest
1 голос
/ 22 февраля 2012

Я создал серию карт Google Fusion Table на своем сайте, База данных сообщества СМИ, которые позволяют пользователю включать и выключать несколько слоев. Для каждого слоя я также создал ОДНО раскрывающееся меню выбора, позволяющее зрителю фильтровать отображаемые результаты на основе этого одного селектора.

Сейчас я нахожусь в точке, где мне нужно создать более одного выпадающего меню выбора для каждого слоя. Например, на связанной карте я бы хотел, чтобы зритель мог просматривать провайдеров доступа к телевидению не только по типу управления, но и по переносу местных программ, связанных с выборами, а также по ряду других полей.

Я все еще довольно новичок в Googgle FT и почти не знаю, как обходить JavaScript. Я попытался скопировать и вставить некоторые примеры кода, но я считаю, что я не правильно устанавливаю уникальные переменные. Они как-то заканчивают конфликтовать, и никто из них не работает.

Может ли кто-нибудь помочь мне узнать, каков простой подход к созданию более одного меню выбора на одном слое Google Fusion Table / map? Спасибо!

~ Роб МакКаусланд, CommunitymediaDatabase.org

1 Ответ

2 голосов
/ 22 февраля 2012

Что ж, проблема в том, что можно получить значения из ваших списков выбора. Я даю всем своим спискам выбора идентификатор и использую jQuery.js для доступа к этим значениям, используя:

var value = $ ('# program_select_id'). Val ();

Во-вторых, цепочка условий вашего запроса через 'И', которую ваш код, похоже, уже понял.

Вот пример некоторого зависимого от jQuery кода, который я использую:

<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> 

<script type="text/javascript">

function setQuery(ft_layer, current_table_id, location_col)
{
    var query = [];

    var value = $('#program_select_id').val();
    if(value !== ''){
        query.push("'program' = '" +  value + "'");
    }
    value = $('#provider_select_id').val();
    if(value !== ''){
        query.push("'data_provider' = '" +  value + "'");
    }
    value = $('#observable_select_id').val();
    if(value !== ''){
        query.push("observables CONTAINS '" + value + "'");
    }

    var where = query.join(' AND ');

    var qryOpts = {
      query: {
        select: location_col,
        from: current_table_id,
        where: where
      }
    };
    ft_layer.setOptions(qryOpts);
}

</script>
...