MapBox - 使用表达式定义PropertyFactory.iconImage

问题描述 投票:0回答:1

我正在尝试为我的图层对象定义方法PropertyFactory.iconImage的值。返回值PropertyValue<String>应使用Feature内的某个字段来定义它的值。

结果看起来像这样:

PropertyFactory.iconImage(Expression.step(Expression.get("myfield"),"mydefaultValue", Expression.Stop.stop("case1", "valueForCase1"), Expression.Stop.stop("case2", "valueForCase2"));

不幸的是,到目前为止我还没有找到类似的解决方案。

java android mapbox mapbox-android
1个回答
0
投票

以下表达式解决了我的问题:

SymbolLayer("asset-layer", "assetMapDataSource").withProperties(
               PropertyFactory.iconImage(Expression.match(
               Expression.get("asset_type"), Expression.literal("bbq_default"),
               Expression.stop("bridge", Expression.literal("bridge_default")))))

编辑:更多信息为什么我在我的示例中使用该方法:

  • PropertyFactory.iconImage需要一个字符串,该字符串指向您之前通过MapBoxMap.addImage(...)保存的某个位图。
  • Expression.match用于根据给定的停止和默认情况“匹配”某个String。
  • Expression.get用于访问要素属性中的特定字段。在这种情况下,字段“asset_type”提供了我可以匹配的特定类型。
  • Expression.match和每个Expression.stop的默认情况是使用Expression.literal。此方法用于告知基础表达式系统您的值来自类型x(在该情况下为String)。看一下Expression.literal方法来了解它。
  • 每个Expression.stop用于表示Expression.match试图将Expression.stop的第一个参数中的给定值与给定的Expression.get值“匹配”。如果Expression.get和该方法值相同,则使用Expression.stop的第二个值,它提供Expression.iconImage的实际值。如果底层表达式系统无法为给定的Expression.get值找到“匹配”停止,则系统将使用默认值(在这种情况下为Expression.literal(“bbq_default”))。
© www.soinside.com 2019 - 2024. All rights reserved.