映射框中的嵌套表达式

时间:2019-05-30 10:43:57

标签: mapbox mapbox-gl-js

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

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

我需要在此表达式中添加另一个条件,例如,当match为True时,其他情况不匹配:

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

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

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

但这没用。

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

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

任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:1)

我发布了case表达式中表达式的位置确实很重要。因此,我使用以下表达式解决了我的问题:

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