如何刷新融合层和过滤显示的标记
How to refresh fusion layer and filter displayed markers
我想使用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,则该标记将保留在地图上,而不是消失。
是我做错了什么还是有别的办法?重要的是,我可以过滤显示的标记,因为会有很多标记,地图必须刷新自己,以显示路由器的当前状态。
任何想法?
我设法通过使用REST-API测试我的查询来解决这个问题。原来是"!"="零件导致问题,更换后"!=" with "NOT IN()"我能够过滤标记并按我的意愿不断刷新它们。
新的查询看起来像这样:
where: "Location NOT IN('" + (-1 * Math.floor(Math.random() * 10000000)).toString() + "')" + " AND Status = '" + selectedStatus + "'"
谢谢大家的帮助。
相关文章:
- ui网格日期单元格过滤器,过滤日期格式导致显示错误的日期
- 如何应用带过滤器的ng if来过滤记录,并在同一页面中显示两个不同的视图
- 如何不显示/过滤特殊字符?(CSS或Javascript)
- Facebook API过滤用户活动,只显示指定的好友
- 条件过滤列表显示在angularjs中
- slickgrid过滤显示错误的行
- Jquery Datatables没有't按显示长度过滤行
- AngularJS-显示过滤数据的长度
- 使用 bxSlider 使用显示/隐藏过滤滑块项目
- D3.js条形图 - 在图例单击时显示/隐藏条形.如何正确过滤
- 在子对象中显示筛选列表的挖空 js.访问要过滤的父对象列表
- 使用 p5 和 Javascript 过滤显示内容的函数
- AngularJS:仅在最后一个选项卡上显示过滤的内容
- 在初始加载时获取带有 postData 过滤器的 jqGrid,以仅显示客户端过滤行
- 如何加载CSV文件以显示在HTML5页面上,并具有搜索框来过滤它
- 使用复选框过滤 angularjs 中的数据,并在逗号分隔的列表中显示在文本框内
- 突出显示 Angular JS 中的过滤行
- 显示过滤数组的长度
- 如何刷新融合层和过滤显示的标记
- 如何过滤显示的数组并重新显示过滤的列表