mapbox 中的嵌套表达式

nested expression in mapbox

我在 mapbox 地图中使用了一个表达式来决定要显示哪个图标。它看起来像这样:

"icon-image": [
  "case",
  ["==", ["get", "matched"], "True"],
  "greenmarkertick",
  "redmarkercross",
]

我需要向这个表达式添加另一个条件,因为匹配时为真但其他条件不匹配,在这种情况下:

["!=", ["get", "vehicle"], ["get", "standstill_vehicle"]]

我试过将其直接添加到我的 case 表达式中,如下所示:

"icon-image": [
  "case",
  ["==", ["get", "matched"], "True"],
  "greenmarker",
  ["!=", ["get", "vehicle"], ["get", "standstill_vehicle"]],
  "orangemarker",
  "redmarker",
]

但这没有用。

基本上我需要的是一个表达式来检查 matched 属性 是否为真,然后检查车辆属性是否匹配。

如果它们确实显示绿色标记,如果它们不显示橙色标记。如果 matched 为假,则应显示红色标记。

如有任何帮助,我们将不胜感激。

我意识到 case 表达式中表达式的位置很重要。所以,我用以下表达式解决了我的问题:

"icon-image": [
  "case",
  ["all", ["==", ["get", "matched"], "True"], ["!=", ["get", "vehicle"], ["get", "standstill_vehicle"]]],
  "orangemarker",
  ["==", ["get", "matched"], "True"],
  "greenmarker",
  "redmarker",
]