2

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

到目前为止,应用程序按预期工作,但对融合表进行更改时除外。当我通过 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 问题还是其他问题。我将不胜感激有关如何解决此问题的任何建议。

谢谢,

4

1 回答 1

0

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

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

获取您的代码可以这样完成:

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()使用(如果可用),例如上次修改的时间戳,以便在未完成更新时仍然可以使用缓存的切片。

于 2013-08-23T17:07:12.497 回答