如何使用用户属性更改 MapboxGL 中的 line-dasharray 设置?

Vir*_*raj 6 javascript mapbox mapbox-gl mapbox-gl-js mapbox-gl-draw

我尝试使用以下代码更改 line-dasharray 设置,

'line-dasharray': [
    "case", 
    ['==', ['get', "user_class_id"], 'laneway'],[0.2,2],[0.3,2] 
 ]
Run Code Online (Sandbox Code Playgroud)

它给出了这个错误,

Error: layers.gl-draw-line-active.hot.paint.line-dasharray[2][0]: Expression name must be a string, but found number instead. If you wanted a literal array, use ["literal", [...]].
Run Code Online (Sandbox Code Playgroud)

所以我根据错误建议修复了代码,

  'line-dasharray': [
      "case", 
      ['==', ['get', "user_class_id"], 'laneway'],['literal',[0.2,2]],['literal',[0.3,2]] 
  ]
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误,

evented.js:136 Error: layers.gl-draw-line-active.hot.paint.line-dasharray: data expressions not supported
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?

And*_*vey 5

请参阅 API 文档:https://docs.mapbox.com/mapbox-gl-js/style-spec/#paint-line-line-dasharray。不支持 line-dasharray 的数据驱动样式。

此支持有一个未解决的问题,网址为https://github.com/mapbox/mapbox-gl-js/issues/3045,您可以关注该问题以获取更新。

同时,您可以将此层拆分为几个具有不同过滤器的层,以获得相同的结果。