Я недавно начал работать с Mapbox SDK на iOS, и у меня есть несколько маркеров, которые я хочу добавить на свою карту.Каждый маркер представляет объект, имеющий несколько свойств, среди которых: свойство типа (которое возвращается к перечислению) и логическое свойство.У меня определено MGLSymbolStyleLayer
, и я соответственно установил большинство связанных с иконками свойств.В настоящее время я устанавливаю цвет значка, основываясь исключительно на «типе» объекта, например:
let defaultColor = UIColor.blue
layer.iconColor = NSExpression(format: "MGL_MATCH(type, 'type1', %@, 'type2', %@, 'type3', %@, %@)", UIColor.orange, UIColor.purple, UIColor.yellow, defaultColor)
Это работает хорошо, но теперь мне нужно добавить дополнительный фрагмент логики в NSExpression
проверить логическое свойство каждого объекта и, если оно истинно, установить красный цвет значка;иначе, определите цвет значка для каждого объекта на основе его типа (используя логику, определенную выше).Итак, в двух словах, мне нужен NSExpression
, который работает следующим образом:
if feature.booleanProperty == true {
// set icon color to red
} else {
// set icon color based on the feature type
}
Я просматривал Mapbox Справочник по предикатам и выражениям документ, но он все еще неясен для менякак бы я реализовал этот вид условной логики в NSExpression
.Может кто-нибудь сказать мне, если это возможно, и если да, то как?