繁体   English   中英

如何在mapbox GL JS上按日期范围过滤数据?

[英]How to filter data by date range on mapbox GL JS?

我在 mapboxGL-js 中实现这个过滤器有一些困难

我有一个矢量切片图层,其中包含 2 个属性 2 个日期、startdate1 和 enddate1 字符串,格式如下 yyyy-mm-dd 我只想过滤我的特定日期范围之间的特征,startDate2,具有相同格式的 endDate2

我怎样才能获得 date1 和 date2,以便调用 javascript 函数Date.parse(date1)以便将它与我的 startDate 进行比较?

我想在我的过滤器中应用以下条件来仅保留功能

Date.parse(startdate1)<= Date.parse(enddate2)  AND  Date.parse(enddate1) >= Date.parse(startdate2) 

谢谢你的帮助 !

处理此问题的最佳方法是将日期转换为时间戳(自纪元以来的秒数)。 然后你可以使用过滤器

[
     "all",     
    [">=", ['get', 'startDate1'], startDate2],
    ["<=", ['get', 'endDate1'], endDate2]
]

我能够使用我称之为自定义过滤器的东西来实现它。 您必须创建一个 sintaxis 以允许您识别何时使用带有日期值的过滤器(它可以是 MapBox 不支持的任何数据类型或自定义实现)。

在将过滤器应用于所需图层之前,您必须将自定义过滤器转换为 MapBox 表达式,对我来说使用匹配运算符很容易。 您必须在地图实例上添加侦听器以在地图平移、缩放或刚刚移动时更新自定义过滤器,因为您需要渲染的特征并且它们仅针对当前视口加载。 我建议地图的 moveend 事件。 您必须创建一种轮询才能知道何时加载功能我将 isSourceLoaded 方法与图层的源 ID 结合使用。 当您知道图层源已加载时,您必须使用 querySourceFeatures 方法来获取功能(它返回一个数组)。

您必须根据您的自定义过滤器过滤特征,并创建一个 mapbox 理解的新过滤器表达式。 注意:您必须按唯一性过滤特征,因为 querySourceFeatures 返回重复值,因为有时在多个图块中检索特征。

这并不容易,但最终结果看起来不错。 祝你好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM