动态更新Mapbox GL表达式以显示或隐藏几何

我想根据用户是否选择在地图上动态显示或隐藏单个几何。我知道Mapbox GL js不直接支持此功能,因此我试图找出最好的解决方法。我不希望不更新源数据,而是致电map.getsource('mysource').setData(data);,因为这似乎有些过分。

是否可以动态地更新表达式并调用setPaintProperty,以便将一个数据子集设置为0%不透明度,从而将其隐藏?然后,我可以重新计算子集并在需要时重新设置属性:

  • 用户单击hide按钮,这会将Feature的唯一标识属性传递给我的函数
  • 该函数获取现有的hiddenshown子集,然后通过动态重写两个表达式将Feature的标识符从一个移到另一个。
  • 新表达式将传递到map.setPaintProperty('layer','opacity',expression);

几何的总数很小(

xqljfazdyq 回答:动态更新Mapbox GL表达式以显示或隐藏几何

假设您在每个功能(例如ID)上都有一些属性,并且应该显示一系列功能,通常的实现方法很简单:

map.setFilter(layer,'==',['get','id'],arrayOfIds);

也可以按照您的建议进行操作,使其中一些透明,例如:

map.setPaintProperty(layer,'line-opacity',['match',arrayOfIds,1.0,0]
);

以及其他各种组合。

本文链接:https://www.f2er.com/2731464.html

大家都在问