2015-11-14 2 views
0

Я пишу со ссылкой на предыдущий мой вопрос, который также связан с использованием предложений Where для слоя таблицы Fusion в Картах Google. Link to earlier question. Я заметил, что если раздел Where в разделе «Стили» содержит более одного условия фильтрации, он игнорируется вообще. Таблицы Google Map/Fusion Tables затем заканчивают применение этого стиля ко всем функциям, содержащимся в этой таблице Fusion. Вы можете удалить условие фильтрации из предложения Where, чтобы сделать его отдельным предложением where, и оно работает так, как ожидалось, поэтому я уверен, что он не любит множественное условие фильтрации в предложении SAME where (или так, как я написав его).Более одного условия в разделе Where условия слоя таблицы Fusion игнорируются в стилях

Ниже приведен пример, который иллюстрирует это поведение:

layer = new google.maps.FusionTablesLayer({ 
    map: map, 
    options: { 
    templateId: 2 
    }, 
    heatmap: { enabled: false }, 
    query: { 
    select: "geometry", 
    from: "1D6d93-0iT2zUCw8IvkbpDPYDx2-jA0ZAWXi07mQD", 
    },  
     styles: [{ 

      //note multiple filters in the same Where clause. 

      where: "((SHIFT_ID != 1) AND (SHIFT_ID != 2))", 

      //you'd expect the following Style option applied to only those map features 
      //which met above criteria. However, they are applied to ALL map features. 

      polylineOptions: { 
      strokeOpacity: 0.70, 
      strokeColor: "#FFFFFF", 
      strokeWeight: "5" } 

    //if Where clause is reduced to just having one filter, it works fine. 
    //For example, either of the following two work fine by themselves. 
    //where: "SHIFT_ID != 1" --OR-- 
    //where: "SHIFT_ID != 2" etc. 

     }] 
}); 
+0

Когда запрос является недействительным, по умолчанию, как представляется, показать все (а не ничего не делать ...) – geocodezip

+0

[где! «((SHIFT_ID = 1) И (SHIFT_ID = 2)) «работает в этой скрипке» (http://jsfiddle.net/geocodezip/2hx6t25c/4/) (или вы говорите, что эти результаты неверны?) – geocodezip

+0

Для жизни я не могу понять что недействительно в запросе. Я попытался взять скобки, вернув их обратно, заменив AND на «&» и «&&», заменив одиночные и двойные кавычки и т. Д. И т. Д. Что-то подсказывает вам этот запрос как то, что может быть недействительным. Имена полей соответствуют тому, как они определены в таблице. Значения полей представляют собой целые числа, поэтому вокруг них нет кавычек (кроме того, они работают нормально, как при использовании в одном фильтре Где) и т. Д. – jaadooviewer

ответ

0

Geocodezip был прав; запрос был недействителен.

Это то, что я смог определить повторно использовать запросы для таблиц Fusion.

  1. Может содержать несколько полей/фильтров в одном месте.
  2. Невозможно использовать скобки "()" для логической логики.
  3. Вместо! =, Используйте NOT EQUAL TO
  4. Для значений NULL проверьте равенство с '' (пустая строка).
  5. Имена полей чувствительны к регистру.

https://developers.google.com/fusiontables/docs/v2/sql-reference

+0

В документации [https://developers.google.com/fusiontables/docs/v2/sql-reference#Select] четко указано, что '! =' Должен работать как с числами, так и с строками, но это явно не так. Он ничего не говорит о круглых скобках, поэтому это определенно является частью проблемы. [Fiddle using NOT EQUAL TO] (http://jsfiddle.net/geocodezip/2hx6t25c/10/) (с инфо-окном, указывающим SHIFT_ID) – geocodezip

 Смежные вопросы

  • Нет связанных вопросов^_^