API Basic Fusion Tables: Как правильно выполнить запрос на обновление? - PullRequest
3 голосов
/ 10 марта 2012

Я имею в виду пример API Fusion Tables «Update Query» https://developers.google.com/fusiontables/docs/samples/change_query Речь идет о раскрывающемся меню, которое изменяет содержимое слоя на карте.

Я пыталсяперестроить весь пример на моем собственном сайте, но я еще не удался.Я сузил возможные ошибки и подводные камни до той части, где слой (с данными из моей таблицы Google Fusion) инициализируется.В примере Google это выглядит так:

    var layer = new google.maps.FusionTablesLayer({
      query: {
        select: locationColumn,
        from: tableId
      },
      map: map
    });

Вот код, который работал для меня в каждом из моих собственных примеров с таблицами Fusion, за исключением приведенного выше.

var layer = new google.maps.FusionTablesLayer(tableid)
layer.setMap(map);

Вот ссылка на действующий код: http://krealeo12.appspot.com/

Поскольку я новичок в этой области API и JavaScript, я не могу понять, почему первый пример неработает а второй делает ?!В чем разница, и что более важно, что это значит?

Я очень благодарен за каждый намек и совет!J.

Ответы [ 4 ]

2 голосов
/ 10 марта 2012

Эта проблема также смутила меня, когда я начал использовать Fusion Tables. Вы найдете много примеров использования устаревших методов:

var layer = new google.maps.FusionTablesLayer(tableid)
layer.setMap(map);
layers.setQuery("select * from " + tableid + " where ridership > 5000");

Первый пример, который вы цитируете, - это правильный способ сделать это. Что было самым запутанным, так это то, что вы не можете объединить два подхода. Например. В прошлый раз, когда я проверял, следующее не будет работать. Исходная карта будет отображаться нормально, но запрос не будет работать.

var layer = FusionTablesLayer(tableid);
var layer.setOptions{
    query: {
     select: 'address',
     from: '198945',
     where: 'ridership > 5000'
  }
});

Правильный способ описан в документах

0 голосов
/ 08 ноября 2013

Вы можете использовать это,

 var fusionOptions = {

          query: {
            select: "Geometry",
            from: "tableId",
            where: ""
          },

        styles: [{

          where: 'Available_Impressions <  605173',
          polygonOptions: {
            fillColor: '#88bad8',
            fillOpacity: 0.8
          }
        }, {
          where: 'Available_Impressions > 605173',
          polygonOptions: {
            fillColor: '#5792c3',
            fillOpacity: 0.8
          }
        }, {
          where: 'Available_Impressions > 1210347',
          polygonOptions: {
            fillColor: '#4572ab',
            fillOpacity: 0.8
          }
        }]          

    }
0 голосов
/ 10 мая 2013

Google не предоставляет сообщений об ошибках из запросов, поэтому вам может потребоваться использовать метод проб и ошибок и поиск примеров для получения результатов. Это сработало для меня. Обратите внимание на кавычки вокруг всей строки (как и следовало ожидать) плюс кавычки вокруг даты.

     layer.setOptions({
       query:{
            select: "col1",
            from: "1Ayaf5aKAanSv6HAtsTLtcAhrnpF94XyuNZ9u_Sk",
            where: "Date<'01/01/2011'"
         },
         styles:[{
                 markerOptions:{
                        iconName:'measle_gray'
                }
            }]
      });           

Полезная, но труднодоступная страница описывает приемлемые форматы дат, среди прочего: https://developers.google.com/fusiontables/docs/v1/sql-reference Я не знаю, почему многие цвета маленьких точек называются «корь», а не «маленький _»

0 голосов
/ 27 марта 2012

Действительно другой вопрос, поэтому я добавляю новый ответ. У вас есть ошибка в вашей функции updateMap ().

 function updateMap(layer, tableid, locationColumn) {
        var sportart = document.getElementById('search-string').value;
        if (sportart) {
          layer.setOptions({
            query: {
              select: locationColumn,
              from: tableid,
              where: "sportart = '" + search-string + "'" // ERROR
            }
          });
        } else {
          layer.setOptions({
            query: {
              select: locationColumn,
              from: tableid
            }
          });
        }
      }

Значение поиска в списке выбора называется «sportart», а не «строка поиска».

...