1

我想根据多个 if 条件为我的 MGLSymbolStyleLayer 功能图标着色,这需要使用 MGL_IF,但出现此运行时错误:“无法解析格式字符串...”

projectsLayer!.iconColor =
          NSExpression(format: "MGL_IF(location_name IN %@, %@, location_name = United States,  %@)",
                       uniqueLocations, savedColor, defaultColor)

请注意,对于像这样简单的事情,我可以使用三元运算符,这对我来说很好用。但是我需要为多种颜色添加多个条件,所以我需要使用 MGL_IF 或类似的东西。

4

1 回答 1

2

看来,由于 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)

这将导致美国被着色,而俄罗斯被着色为浅灰色,巴西被着色为紫色,委内瑞拉被着色为蓝绿色,其他所有事物被着色为黄色。

于 2020-04-20T17:42:40.290 回答