最近、iOS で Mapbox SDK を使い始めました。マップに追加したいマーカーがいくつかあります。各マーカーは、タイプ プロパティ (列挙型に戻る) とブール型プロパティなど、いくつかのプロパティを持つオブジェクトを表します。をMGLSymbolStyleLayer
定義し、それに応じてアイコン関連のプロパティのほとんどを設定しました。現在、次のようにオブジェクトの「タイプ」のみに基づいてアイコンの色を設定しています。
let defaultColor = UIColor.blue
layer.iconColor = NSExpression(format: "MGL_MATCH(type, 'type1', %@, 'type2', %@, 'type3', %@, %@)", UIColor.orange, UIColor.purple, UIColor.yellow, defaultColor)
NSExpression
これはうまく機能していますが、各オブジェクトのブール値プロパティをチェックし、true の場合はアイコンの色を赤に設定するロジックを追加する必要があります。それ以外の場合は、オブジェクトのタイプに基づいて各オブジェクトのアイコンの色を決定します (上で定義したロジックを使用)。つまり、一言で言えば、次のNSExpression
ような機能が必要です。
if feature.booleanProperty == true {
// set icon color to red
} else {
// set icon color based on the feature type
}
Mapbox Predicates and Expressions Reference doc を調べましたが、この種の条件付きロジックをNSExpression
. これが可能かどうか、また可能であればどのように教えてもらえますか?