看来,由于 Apple 的 iOS/macOS SDK 更改导致的 Maps SDK 回归导致 MGL_IF 出现这种行为。作为一种解决方法,您可以使用 TERNARY() 或 MGL_MATCH() 运算符,如下所述:
TERNARY() 只支持一种情况。(MGL_IF与 TERNARY 没有什么不同,也不是必需的。)对于多种情况,您需要嵌套TERNARY(foo = bar, 'A', TERNARY(bar = baz, 'B', 'C')):
coloredLayer.fillColor = NSExpression(format: "TERNARY(location_name = 'United States', %@, TERNARY(location_name = 'Russia', %@,))", UIColor.white, UIColor.green, UIColor.magenta)
或者使用 MGL_MATCH():
coloredLayer.fillColor = NSExpression(format: "MGL_MATCH(location_name, 'United States', %@, 'Russia', %@, 'Brazil', %@, 'Venezuela', %@, %@)", UIColor.white, UIColor.lightGray, UIColor.purple, UIColor.systemTeal, UIColor.yellow)
这将导致美国被着色,而俄罗斯被着色为浅灰色,巴西被着色为紫色,委内瑞拉被着色为蓝绿色,其他所有事物被着色为黄色。