Android Mapxox - 更改功能 ID 的图标样式
Android Mapxox - Change icon style for feature id
我在 MapView 和 RecyclerView 列表上显示了一些位置,显示了相同的位置。单击列表行时,我想让所有 poi 图标更小和透明,除了从列表中单击的图标。这是我到目前为止所拥有的,但它失败了。它将更改应用于 ALL 图标,包括单击的图标。我想我遗漏了与 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)
)
)
)
}
我在 MapView 和 RecyclerView 列表上显示了一些位置,显示了相同的位置。单击列表行时,我想让所有 poi 图标更小和透明,除了从列表中单击的图标。这是我到目前为止所拥有的,但它失败了。它将更改应用于 ALL 图标,包括单击的图标。我想我遗漏了与 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)
)
)
)
}