表更新后Fusion表api映射不显示样式

时间:2013-08-23 15:45:30

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

我对Fusion Tables Api相对较新,我正在尝试使用Fusion Tables和Google Maps Api创建一个简单的Web应用程序。该应用程序将每天使用大约三次,每次将一组新数据添加到表中,用新的条目替换旧条目。

到目前为止,应用程序正在按预期工作,除非对融合表进行更改。当我通过Fusion Table页面手动添加或删除表中的多行,然后返回到我的应用程序时,我注意到样式停止正常工作,并且在许多情况下根本不显示;然而,大约一个小时后,一切都开始正常工作。

我用来创建样式的代码就是这个,

layer = new google.maps.FusionTablesLayer({
    query: {
      select: "geometry",
      from: '11CIZUlNjBPiOM1Y4pDUP_Mn9TxkqF0etfpWhi5c'
    },
    styles:[
    {
        polygonOptions:{
                fillColor: '#FF0000',         
                fillOpacity: 0.05 
                }
    },
    {
        where: "Location LIKE 'PERDUE'",
        polygonOptions: {
        //fillColor: '#0000FF'
        fillOpacity:0.2
        } 
    },
    {
        where: "GeoBlock = 'AC1C'",
        polygonOptions: {
        //fillColor: '#0000FF'
        fillOpacity:0.8
        }
    },
    {
        where: "Location = 'BENGOUGH'",
        polygonOptions: {
        //fillColor: '#0000FF'
        fillOpacity:0.99
        }  
    }]
  });

  layer.setMap(map);

我已经研究了一下,看看是否有其他人遇到类似的问题,而且我遇到的最接近的问题与我遇到的问题类似,可能是浏览器的缓存问题,但我已经用多台机器同时测试了这个场景,并且得到了相同的结果,我还在我的代码中添加了no-cache标签,以防止浏览器缓存样式。我不确定这是Api问题还是其他问题。我将很感激如何解决这个问题。

谢谢,

1 个答案:

答案 0 :(得分:0)

这是一个API问题,为显示图层而创建的图块也将由谷歌缓存。

您可以做什么:修改查询,以便它仍然获取相同的结果,但查询的字符串表示形式不同。这应该加速tile更新(并防止客户端缓存)。

接受你的代码就可以这样做:

var and=' Location does not contain "'+new Date().getTime()+'"';

 layer = new google.maps.FusionTablesLayer({
    query: {
      select: "geometry",
      from: '11CIZUlNjBPiOM1Y4pDUP_Mn9TxkqF0etfpWhi5c',
      where: and
    },
    styles:[
    {
        polygonOptions:{
                fillColor: '#FF0000',         
                fillOpacity: 0.05 
                }
    },
    {
        where: "Location LIKE 'PERDUE' and "+and,
        polygonOptions: {
        //fillColor: '#0000FF'
        fillOpacity:0.2
        } 
    },
    {
        where: "GeoBlock = 'AC1C' and "+and,
        polygonOptions: {
        //fillColor: '#0000FF'
        fillOpacity:0.8
        }
    },
    {
        where: "Location = 'BENGOUGH' and "+and,
        polygonOptions: {
        //fillColor: '#0000FF'
        fillOpacity:0.99
        }  
    }]
  });

我建议使用(如果可用),而不是使用new Date().getTime(),例如最后修改的时间戳,以便在未进行更新时仍可使用缓存的磁贴。