Javascript 如何刷新融合层并过滤显示的标记

Javascript 如何刷新融合层并过滤显示的标记,javascript,google-maps,google-maps-api-3,google-fusion-tables,Javascript,Google Maps,Google Maps Api 3,Google Fusion Tables,我想用谷歌地图中的融合层来显示路由器的位置和状态作为标记,标记的颜色告诉你它的状态是什么。因此,融合表中的数据会频繁更改,这意味着地图必须刷新自身才能显示表中的更改 我使用javascript中的以下代码刷新了该层: function refresh() { layer.setOptions({ query: { select: '\'location\'', from: dbloc,

我想用谷歌地图中的融合层来显示路由器的位置和状态作为标记,标记的颜色告诉你它的状态是什么。因此,融合表中的数据会频繁更改,这意味着地图必须刷新自身才能显示表中的更改

我使用javascript中的以下代码刷新了该层:

function refresh()
{
  layer.setOptions({
            query: {
                select: '\'location\'',
                from: dbloc,
                where: "location != " + (-1 * Math.floor(Math.random() * 10000000)).toString()
            },
            styleId: styleNr,
            map: map
   }); 

}
此函数每十秒钟调用一次,在地图上显示所有标记时效果很好,但是当我想根据另一列(在本例中为状态列)过滤标记时,什么都不会发生

我尝试为状态添加筛选器,如下所示:

where: "location != " + (-1 * Math.floor(Math.random() * 10000000)).toString() + " and " + "status = " + selectedStatus
我还尝试将它们放入数组并将其传递给查询:

var refreshClause = "location != " + (-1 * Math.floor(Math.random() * 10000000)).toString();
var statusClause = "status = " + selectedStatus;

where: [refreshClause, statusClause]
遗憾的是,这两种方法都不起作用

如果我使用条件按状态过滤,而没有刷新融合层所需的条件,则标记将按给定状态正确过滤。唯一的问题是,如果融合表中的数据发生变化,则显示的标记不再发生变化。因此,如果我显示状态为1的标记,并将其中一个标记更改为状态2,则该标记将保留在地图上,而不是消失

是我做错了什么,还是有别的办法?重要的是,我可以过滤显示的标记,因为将有很多标记,并且地图必须刷新以显示路由器的当前状态


有什么想法吗?

我通过使用REST-API测试我的查询,设法解决了这个问题。原来是“!=”部分导致了问题,在将“!=”替换为“NOT IN()”之后,我能够过滤标记并按照我的意愿不断刷新它们

新查询如下所示:

where: "Location NOT IN('" + (-1 * Math.floor(Math.random() * 10000000)).toString() +  "')" + " AND Status = '" + selectedStatus + "'"

谢谢大家的帮助。

你的Fusionable是什么样子的?“状态”是一列吗?状态是FusionTable中的一列,它包含数字1、2或3。1在线,2离线,3未知。除此之外,FusionTable还有列Id、Customer_Id和Location。它是“Status”还是“Status”(列名区分大小写)。“Status”带有小写字母smaybe某些缓存在那里处于活动状态,您等待一段时间后是否获得了正确的标记?