I'm using in a mapbox gl layer in the layout
-block the field 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],
}
This is working as expected, but now I want to change the the offset based on a properties. This is working quite well for the 'text-size'
, but for the text-offset I can't find the right syntax. I've tried the following:
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],
],
},
Maybe mapbox-gl isn't supporting a step ramp at the text-offset at the moment?
Error Message:
Error: 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]
],
],
},
Error Message:
Error: layers.cluster-offline.layout.text-offset: array length 2 expected, length 1 found
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]],
],
},
Error Message:
Error: layers.cluster-offline.layout.text-offset[0]: number expected, array found
You need to wrap your text-offset values with a literal type converter:
'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]
]
Stop output values must be literal values (ie not functions or expressions)
Here, the [-0.84, 0.23]
sub-expressions may be ambiguous to Mapbox, so you need to explicitly tell their type.
In version 1.6.1
,I have not tested other versions.
you only need to set an array in properties
,
such as "offsetdate": [-1,0]
,
and then use "text-offset": ['get', 'offsetdate']
to get the data .
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.