我想在Google地图中使用Fusion图层来显示路由器的位置和状态作为标记,其中标记的颜色告诉您它的状态。因此,Fusion表中的数据会频繁更改,这意味着地图必须自行刷新才能显示表中的更改
我设法使用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]
可悲的是,这两个都不起作用。
如果我使用条件按状态过滤而没有刷新融合图层所需的条件,则标记将按给定状态正确过滤。唯一的问题是,如果Fusion表中的数据发生变化,显示的标记不再变化。因此,如果我显示状态为1的标记并将标记更改为状态2,则该标记将保留在地图上而不是消失。
有什么我做错了还是有另一种方式?重要的是我可以过滤显示的标记,因为它们会有很多,并且地图必须自行刷新才能显示路由器的当前状态。
有什么想法吗?
答案 0 :(得分:0)
我设法通过使用REST-API测试我的查询来解决问题。事实证明“!=”部分导致问题,在用“NOT IN()”替换“!=”后,我能够过滤标记并像我想的那样不断刷新它们。
新查询如下所示:
where: "Location NOT IN('" + (-1 * Math.floor(Math.random() * 10000000)).toString() + "')" + " AND Status = '" + selectedStatus + "'"
感谢所有帮助人员。