diff options
author | Jason Wray <friedbunny@users.noreply.github.com> | 2018-12-07 21:46:46 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-07 21:46:46 -0500 |
commit | 7cdbe6664ac27d7734e50ea6659dbcf021f61916 (patch) | |
tree | 712838bfb8a68f4c729a0e185a6b1cd8cc6e9d40 /platform/darwin/src/NSExpression+MGLAdditions.mm | |
parent | 1b0365429de2175688f496db3b0ac5cdb1439fb6 (diff) | |
download | qtlocation-mapboxgl-7cdbe6664ac27d7734e50ea6659dbcf021f61916.tar.gz |
[ios, macos] Update for streets-v8 data and coalesced name fields in v11 styles
Diffstat (limited to 'platform/darwin/src/NSExpression+MGLAdditions.mm')
-rw-r--r-- | platform/darwin/src/NSExpression+MGLAdditions.mm | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/platform/darwin/src/NSExpression+MGLAdditions.mm b/platform/darwin/src/NSExpression+MGLAdditions.mm index 04152afffd..527cb64b3d 100644 --- a/platform/darwin/src/NSExpression+MGLAdditions.mm +++ b/platform/darwin/src/NSExpression+MGLAdditions.mm @@ -1398,12 +1398,16 @@ NSDictionary<NSNumber *, NSExpression *> *MGLLocalizedStopDictionary(NSDictionar - (NSExpression *)mgl_expressionLocalizedIntoLocale:(nullable NSLocale *)locale { switch (self.expressionType) { case NSConstantValueExpressionType: { - NSDictionary *stops = self.constantValue; - if ([stops isKindOfClass:[NSDictionary class]]) { - NSDictionary *localizedStops = MGLLocalizedStopDictionary(stops, locale); - if (localizedStops != stops) { + if ([self.constantValue isKindOfClass:[NSDictionary class]]) { + NSDictionary *localizedStops = MGLLocalizedStopDictionary(self.constantValue, locale); + if (localizedStops != self.constantValue) { return [NSExpression expressionForConstantValue:localizedStops]; } + } else if ([self.constantValue isKindOfClass:[NSArray class]]) { + NSArray *localizedValues = MGLLocalizedCollection(self.constantValue, locale); + if (localizedValues != self.constantValue) { + return [NSExpression expressionForConstantValue:localizedValues]; + } } return self; } @@ -1422,19 +1426,18 @@ NSDictionary<NSNumber *, NSExpression *> *MGLLocalizedStopDictionary(NSDictionar if ([localizedKeyPath isEqualToString:@"name"]) { return [NSExpression expressionForKeyPath:localizedKeyPath]; } - // If the keypath is `name_zh-Hans`, fallback to `name_zh` to `name` - // The `name_zh-Hans` field was added since Mapbox Streets v7 - // See the documentation of name fields for detail https://www.mapbox.com/vector-tiles/mapbox-streets-v7/#overview - // CN tiles might using `name_zh-CN` for Simplified Chinese + // If the keypath is `name_zh-Hans`, fallback to `name_zh` to `name`. + // CN tiles might using `name_zh-CN` for Simplified Chinese. if ([localizedKeyPath isEqualToString:@"name_zh-Hans"]) { return [NSExpression expressionWithFormat:@"mgl_coalesce({%K, %K, %K, %K})", localizedKeyPath, @"name_zh-CN", @"name_zh", @"name"]; } - // Mapbox Streets v8 has `name_zh-Hant`, we should fallback to Simplified Chinese if the filed has no value + // Mapbox Streets v8 has `name_zh-Hant`, we should fallback to Simplified Chinese if the field has no value. if ([localizedKeyPath isEqualToString:@"name_zh-Hant"]) { return [NSExpression expressionWithFormat:@"mgl_coalesce({%K, %K, %K, %K, %K})", localizedKeyPath, @"name_zh-Hans", @"name_zh-CN", @"name_zh", @"name"]; } + // Other keypath fallback to `name` return [NSExpression expressionWithFormat:@"mgl_coalesce({%K, %K})", localizedKeyPath, @"name"]; } |