4

我在 -block layoutthe field的 mapbox gl 层中使用text-offset

layout: { // Working
  'text-field': '{point_count_abbreviated}',
  'text-size': ['step', ['get', 'point_count'], 18, 10, 14, 100, 12],
  'text-offset': [-0.84, 0.23],
}

这按预期工作,但现在我想根据属性更改偏移量。这对 . 来说效果很好'text-size',但对于文本偏移我找不到正确的语法。我尝试了以下方法:

layout: { // NOT working
  'text-field': '{point_count_abbreviated}',
  'text-size': ['step', ['get', 'point_count'], 18, 10, 14, 100, 12],
  'text-offset': [
    // [-0.84, 0.23],
    ['step', ['get', 'point_count'], -0.84, 10, -0.94, 100, -0.99],
    ['step', ['get', 'point_count'], 0.23, 10, 0.25, 100, 0.28],
  ],
},

也许 mapbox-gl 目前不支持文本偏移处的阶梯斜坡?

错误信息:

错误:layers.cluster-offline.layout.text-offset[0]: number expected, array found


layout: { // NOT working
  'text-field': '{point_count_abbreviated}',
  'text-size': ['step', ['get', 'point_count'], 18, 10, 14, 100, 12],
  'text-offset': [
    // [-0.84, 0.23],
    ['literal', 
       ['step', ['get', 'point_count'], -0.84, 10, -0.94, 100, -0.99], 
       ['step', ['get', 'point_count'], 0.23, 10, 0.25, 100, 0.28]
    ],
  ],
},

错误信息:

错误:layers.cluster-offline.layout.text-offset:预期数组长度 2,找到长度 1


layout: { // NOT working
  'text-field': '{point_count_abbreviated}',
  'text-size': ['step', ['get', 'point_count'], 18, 10, 14, 100, 12],
  'text-offset': [
    ['literal', ['step', ['get', 'point_count'], -0.84, 10, -0.94, 100, -0.99]], 
    ['literal', ['step', ['get', 'point_count'], 0.23, 10, 0.25, 100, 0.28]],
  ],
},

错误信息:

错误:layers.cluster-offline.layout.text-offset[0]: number expected, array found

4

2 回答 2

2

您需要使用文字类型转换器包装您的文本偏移值:

'text-offset': [
  'step',                         // Expression type (discrete matching)
  ['get', 'point_count'],         // Variable to compare to
  ['literal', [-0.84, 0.23]],     // Default value (if none of the following match)
  10, ['literal', [-0.94, 0.25]], // if point_count === 10: [-0.94, 0.25]
  100, ['literal', [-0.99, 0.28]] // if point_count === 100: [-0.94, 0.28]
]

停止输出值必须是文字值(即不是函数或表达式)

来源

在这里,[-0.84, 0.23]子表达式对于 Mapbox 来说可能是模棱两可的,所以你需要明确地告诉它们的类型。

于 2018-07-17T14:36:44.930 回答
0

在版本1.6.1中,我没有测试过其他版本。

您只需要在 中设置一个数组properties

比如"offsetdate": [-1,0]

然后"text-offset": ['get', 'offsetdate']用来获取数据。

于 2020-01-08T02:48:44.377 回答