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

Java MapBox-使用表达式定义PropertyFactory.iconImage,java,android,mapbox,mapbox-android,Java,Android,Mapbox,Mapbox Android,我正在尝试为我的图层对象定义方法PropertyFactory.iconImage的值。返回值PropertyValue应该使用特征中的某个字段来定义其值 结果可能是这样的: PropertyFactory.iconImage(Expression.step(Expression.get("myfield"),"mydefaultValue", Expression.Stop.stop("case1", "valueForCase1"), Expression.Stop.stop("case2"

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

结果可能是这样的:

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

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

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

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用于访问要素属性中的特定字段。在这种情况下,“资产类型”字段提供了我可以匹配的特定类型
  • Expression.match和每个Expression.stop的默认大小写都使用Expression.literal。此方法用于告诉基础表达式系统您的值来自类型x(在该情况下为字符串)。请看一下Expression.literal方法以了解这一点
  • 每个Expression.stop都用于表示Expression.match正试图将Expression.stop的第一个参数中的给定值与给定Expression.get值“匹配”。如果Expression.get和该方法值相同,则使用Expression.stop的第二个值,该值提供Expression.iconImage的实际值。如果基础表达式系统无法找到给定expression.get值的“匹配”停止点,则系统将使用默认值(在这种情况下为expression.literal(“bbq_default”))

我不明白你是如何得到你需要的东西的。你能解释一下这是怎么回事吗?“为什么得到,文字和停止?”我编辑了我的答案。这对你有帮助吗?