You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mapbox Android SDK v9到v10:IntArray版Expression.inExpression迁移

Mapbox Android SDK v9至v10:IntArray过滤图层要素代码迁移方案

问题原因

v10版本中,Expression.literal()不再支持直接传入IntArray,且接受List<Any>的重载被标记为internal(内部API,不允许外部调用),导致原v9代码无法兼容。

迁移方案

使用Expression.array()构建数组字面量表达式,配合Expression.in$()(因in是Kotlin关键字,v10中函数名改为in$)实现过滤逻辑,具体步骤如下:

  • 将IntArray转换为List<Int>,便于后续映射处理
  • 把列表中的每个整数转换为Expression.literal()实例
  • 通过Expression.array()将这些字面量组合成数组表达式
  • 传入Expression.in$()完成过滤条件构建

代码示例

// 原v9代码
// val filter = Expression.inExpression(Expression.get("id"), Expression.literal(intArray))

// v10迁移后的代码
val targetIds = intArrayOf(1, 3, 5) // 你的目标ID数组
val idLiterals = targetIds.map { Expression.literal(it) }.toTypedArray()
val filter = Expression.in$(
    Expression.get("id"),
    Expression.array(*idLiterals)
)

补充说明

Expression.in$()的第二个参数要求是数组类型的表达式,Expression.array()是官方推荐的创建字面量数组的方式,可灵活适配不同长度的ID集合。

内容的提问来源于stack exchange,提问作者Nate Irwin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 18:55:03