【问题标题】:Basic Fusion Tables API: How do you do an update query correctly?Basic Fusion Tables API:如何正确执行更新查询?
【发布时间】:2012-03-09 20:22:16
【问题描述】:

我指的是 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 的新手,我无法区分为什么第一个示例不起作用而第二个示例起作用?!有什么区别,更重要的是,它是什么意思?

我非常感谢每一个提示和建议! J.

【问题讨论】:

  • 我不完全明白你想要做什么。您想在实时代码中添加下拉菜单吗?或者只是使用第一个更大的代码块加载您的 Fusion Table 数据?

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


【解决方案1】:

当我开始使用 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中描述

【讨论】:

【解决方案2】:

真的是另一个问题,所以我要添加一个新答案。你的 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”而不是“search-string”。

【讨论】:

    【解决方案3】:

    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 不知道为什么很多颜色的小圆点叫“麻疹_”而不是“小_”

    【讨论】:

      【解决方案4】:

      你可以用这个,

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

      【讨论】:

        猜你喜欢
        • 2012-04-24
        • 1970-01-01
        • 2014-10-11
        • 2017-02-04
        • 1970-01-01
        • 2014-01-29
        • 1970-01-01
        • 2013-04-30
        • 1970-01-01
        相关资源
        最近更新 更多