1

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

结果可能如下所示:

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

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

4

1 回答 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 用于根据给定的停止和默认情况“匹配”某个字符串。
  • Expression.get 用于访问特征属性中的某个字段。在这种情况下,“asset_type”字段提供了我可以匹配的某种类型。
  • Expression.match 和每个 Expression.stop 的默认情况都使用 Expression.literal。此方法用于告诉底层表达式系统您的值来自类型 x(在这种情况下为 String)。查看 Expression.literal 方法以了解这一点。
  • 每个 Expression.stop 用于表示 Expression.match 正在尝试将 Expression.stop 的第一个参数中的给定值与给定的 Expression.get 值“匹配”。如果 Expression.get 和该方法值相同,则使用 E​​xpression.stop 的第二个值,它提供 Expression.iconImage 的实际值。如果底层表达式系统无法找到给定 Expression.get 值的“匹配”停止,系统将使用默认值(在这种情况下是 Expression.literal("bbq_default"))。
于 2018-07-14T05:17:34.747 回答