Android Mapxox - 更改功能 ID 的图标样式

Android Mapxox - Change icon style for feature id

我在 MapView 和 RecyclerView 列表上显示了一些位置,显示了相同的位置。单击列表行时,我想让所有 poi 图标更小和透明,除了从列表中单击的图标。这是我到目前为止所拥有的,但它失败了。它将更改应用于 A​​LL 图标,包括单击的图标。我想我遗漏了与 switchCase 逻辑相关的内容。请帮忙?

private fun updateLayer(layer: Layer, opacity: Float, scale: Float, excludeFeatureId: Int) {
    layer.setProperties(
        PropertyFactory.iconOpacity(
            switchCase(
                eq(get("featureId"), literal(excludeFeatureId)),
                literal(1),
                neq(get("featureId"), literal(excludeFeatureId)),
                literal(opacity),
                literal(1)
            )
        ),
        PropertyFactory.iconSize(
            switchCase(
                eq(get("featureId"), literal(excludeFeatureId)),
                literal(1),
                neq(get("featureId"), literal(excludeFeatureId)),
                literal(scale),
                literal(1)
            )
        )
    )
}

我还需要更改该特定 featureId 的图标。这方面的信息也会有所帮助。

事实证明,我的代码唯一需要更正的是不在表达式中使用整数值。 excludeFeatureId 需要作为字符串提供。

private fun updateLayer(layer: Layer, opacity: Float, scale: Float, excludeFeatureId: Int) {
    layer.setProperties(
        PropertyFactory.iconOpacity(
            switchCase(
                eq(get("featureId"), literal(excludeFeatureId.toString())),
                literal(1),
                neq(get("featureId"), literal(excludeFeatureId.toString())),
                literal(opacity),
                literal(1)
            )
        ),
        PropertyFactory.iconSize(
            switchCase(
                eq(get("featureId"), literal(excludeFeatureId.toString())),
                literal(1),
                neq(get("featureId"), literal(excludeFeatureId.toString())),
                literal(scale),
                literal(1)
            )
        )
    )
}