在interpolate中使用get表达式导致text-translate失效,求原因分析
问题原因及解决方法
问题出在你把get表达式嵌套在了literal里面——literal的作用是定义静态字面量值,它内部只能放固定的常量,不能引用动态的数据源属性(比如get这种会随要素变化的表达式),所以当你在literal里用get时,整个表达式会因不符合语法规则而失效。
你需要把包裹动态内容的literal去掉,直接返回包含get的数组即可,因为interpolate的输出本身支持动态计算的数组,不需要用literal来包裹动态内容。
修正后的代码示例:
'text-translate': [ 'interpolate', ['exponential', 2], ['zoom'], 0, [0, 0], 20, [0, ['get', NAME_OF_PROPERTY]] ],
如果想明确区分静态值,也可以只给静态部分保留literal,动态部分直接用表达式:
'text-translate': [ 'interpolate', ['exponential', 2], ['zoom'], 0, ['literal', [0, 0]], 20, [0, ['get', NAME_OF_PROPERTY]] ],
这样interpolate在缩放级别20时,就能正确获取要素的NAME_OF_PROPERTY属性值作为Y轴偏移量,text-translate功能也能正常工作了。
内容的提问来源于stack exchange,提问作者Jesús Rodríguez Pérez
相关产品推荐
相关产品推荐

