我对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问题还是其他问题。我将很感激如何解决这个问题。
谢谢,
答案 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()
,例如最后修改的时间戳,以便在未进行更新时仍可使用缓存的磁贴。