From f98cf0cd4b5212678d35bf28bf087909dcbd0756 Mon Sep 17 00:00:00 2001 From: kevin Date: Wed, 4 Mar 2020 14:26:00 +0800 Subject: [PATCH] [core] Not filter express `in` in `filter`. --- src/mbgl/style/conversion/filter.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/mbgl/style/conversion/filter.cpp b/src/mbgl/style/conversion/filter.cpp index f3e7050cc..0a10d1e80 100644 --- a/src/mbgl/style/conversion/filter.cpp +++ b/src/mbgl/style/conversion/filter.cpp @@ -53,9 +53,14 @@ bool isExpression(const Convertible& filter) { optional operand = toString(arrayMember(filter, 1)); return operand && *operand != "$id" && *operand != "$type"; - } else if (*op == "in" || *op == "!in" || *op == "!has" || *op == "none") { + } else if (*op == "!in" || *op == "!has" || *op == "none") { return false; + } else if (*op == "in") { + optional str = toString(arrayMember(filter, 1)); + + return arrayLength(filter) >= 3 && (!str || isArray(arrayMember(filter, 2))); + } else if (*op == "==" || *op == "!=" || *op == ">" || *op == ">=" || *op == "<" || *op == "<=") { return arrayLength(filter) != 3 || isArray(arrayMember(filter, 1)) || isArray(arrayMember(filter, 2));