基本Fusion Tables API:如何正确执行更新查询?

时间:2012-03-09 20:22:16

标签: api google-maps google-fusion-tables

我指的是Fusion Tables API示例“更新查询”https://developers.google.com/fusiontables/docs/samples/change_query 它是关于一个下拉菜单,它改变了地图上图层的内容。

我试图在我自己的网站上重建整个示例,但我还没有解决。我将可能的错误和陷阱缩小到图层(我的谷歌融合表中的数据)初始化的部分。 它看起来像谷歌的例子:

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

以下是我自己的每个示例中使用融合表的代码,除了上面显示的代码。

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

以下是实时代码的链接:http://krealeo12.appspot.com/

由于我是这个整个API和JavaScript的新手,我无法分辨为什么第一个例子不起作用而第二个例子不起作用?!有什么区别,更重要的是,这是什么意思?

我非常感谢每一个提示和建议! 学家

4 个答案:

答案 0 :(得分:2)

当我开始使用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'
  }
});

docs

中描述了正确的方法

答案 1 :(得分:0)

真的是另一个问题,所以我添加了一个新答案。您在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"不是"搜索字符串"。

答案 2 :(得分:0)

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 我不知道为什么许多小点的颜色被称为“measle_”而不是“small _”

答案 3 :(得分:0)

你可以使用它,

 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
          }
        }]          

    }