diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2018-08-10 14:45:57 +0300 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2018-08-21 13:49:35 +0300 |
commit | 5ce64b786cfd2fbfdc28ccfbcf9c1a5216346281 (patch) | |
tree | 9eed5006ab59268e4004e157f9f49a9a9e41b7a5 /platform/darwin | |
parent | 7e6331b29f13a14076bac4ebbf22006c055933c8 (diff) | |
download | qtlocation-mapboxgl-5ce64b786cfd2fbfdc28ccfbcf9c1a5216346281.tar.gz |
[ios, macos] Introduce `MGLShapeSourceOptionLineDistanceMetrics`
Exposes access to
https://www.mapbox.com/mapbox-gl-js/style-spec/#sources-geojson-lineMetrics
Diffstat (limited to 'platform/darwin')
-rw-r--r-- | platform/darwin/docs/guides/For Style Authors.md.ejs | 1 | ||||
-rw-r--r-- | platform/darwin/src/MGLShapeSource.h | 12 | ||||
-rw-r--r-- | platform/darwin/src/MGLShapeSource.mm | 9 | ||||
-rw-r--r-- | platform/darwin/test/MGLShapeSourceTests.mm | 4 |
4 files changed, 25 insertions, 1 deletions
diff --git a/platform/darwin/docs/guides/For Style Authors.md.ejs b/platform/darwin/docs/guides/For Style Authors.md.ejs index 940c9b1042..dd07ae9e76 100644 --- a/platform/darwin/docs/guides/For Style Authors.md.ejs +++ b/platform/darwin/docs/guides/For Style Authors.md.ejs @@ -222,6 +222,7 @@ In style JSON | In the SDK `cluster` | `MGLShapeSourceOptionClustered` `clusterRadius` | `MGLShapeSourceOptionClusterRadius` `clusterMaxZoom` | `MGLShapeSourceOptionMaximumZoomLevelForClustering` +`lineMetrics` | `MGLShapeSourceOptionLineDistanceMetrics` To create a shape source from local GeoJSON data, first [convert the GeoJSON data into a shape](working-with-geojson-data.html#converting-geojson-data-into-shape-objects), diff --git a/platform/darwin/src/MGLShapeSource.h b/platform/darwin/src/MGLShapeSource.h index e5c62515e5..c80c329cbc 100644 --- a/platform/darwin/src/MGLShapeSource.h +++ b/platform/darwin/src/MGLShapeSource.h @@ -96,6 +96,18 @@ FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionBuff FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionSimplificationTolerance; /** + An `NSNumber` object containing a Boolean enabling or disabling calculating line distance metrics. + + Set this property to `YES` in order for the `MGLLineStyleLayer.lineGradient` property to have its intended effect. + The default value is `NO`. + + This option corresponds to the + <a href="https://www.mapbox.com/mapbox-gl-js/style-spec/#sources-geojson-lineMetrics"><code>lineMetrics</code></a> + source property in the Mapbox Style Specification. + */ +FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionLineDistanceMetrics; + +/** `MGLShapeSource` is a map content source that supplies vector shapes to be shown on the map. The shapes may be instances of `MGLShape` or `MGLFeature`, or they may be defined by local or external diff --git a/platform/darwin/src/MGLShapeSource.mm b/platform/darwin/src/MGLShapeSource.mm index 9457d2569a..c960f2a4a7 100644 --- a/platform/darwin/src/MGLShapeSource.mm +++ b/platform/darwin/src/MGLShapeSource.mm @@ -20,6 +20,7 @@ const MGLShapeSourceOption MGLShapeSourceOptionMaximumZoomLevel = @"MGLShapeSour const MGLShapeSourceOption MGLShapeSourceOptionMaximumZoomLevelForClustering = @"MGLShapeSourceOptionMaximumZoomLevelForClustering"; const MGLShapeSourceOption MGLShapeSourceOptionMinimumZoomLevel = @"MGLShapeSourceOptionMinimumZoomLevel"; const MGLShapeSourceOption MGLShapeSourceOptionSimplificationTolerance = @"MGLShapeSourceOptionSimplificationTolerance"; +const MGLShapeSourceOption MGLShapeSourceOptionLineDistanceMetrics = @"MGLShapeSourceOptionLineDistanceMetrics"; mbgl::style::GeoJSONOptions MGLGeoJSONOptionsFromDictionary(NSDictionary<MGLShapeSourceOption, id> *options) { auto geoJSONOptions = mbgl::style::GeoJSONOptions(); @@ -80,6 +81,14 @@ mbgl::style::GeoJSONOptions MGLGeoJSONOptionsFromDictionary(NSDictionary<MGLShap geoJSONOptions.cluster = value.boolValue; } + if (NSNumber *value = options[MGLShapeSourceOptionLineDistanceMetrics]) { + if (![value isKindOfClass:[NSNumber class]]) { + [NSException raise:NSInvalidArgumentException + format:@"MGLShapeSourceOptionLineDistanceMetrics must be an NSNumber."]; + } + geoJSONOptions.lineMetrics = value.boolValue; + } + return geoJSONOptions; } diff --git a/platform/darwin/test/MGLShapeSourceTests.mm b/platform/darwin/test/MGLShapeSourceTests.mm index d3f9a599e2..c4f791f958 100644 --- a/platform/darwin/test/MGLShapeSourceTests.mm +++ b/platform/darwin/test/MGLShapeSourceTests.mm @@ -18,7 +18,8 @@ MGLShapeSourceOptionMaximumZoomLevelForClustering: @98, MGLShapeSourceOptionMaximumZoomLevel: @99, MGLShapeSourceOptionBuffer: @1976, - MGLShapeSourceOptionSimplificationTolerance: @0.42}; + MGLShapeSourceOptionSimplificationTolerance: @0.42, + MGLShapeSourceOptionLineDistanceMetrics: @YES}; auto mbglOptions = MGLGeoJSONOptionsFromDictionary(options); XCTAssertTrue(mbglOptions.cluster); @@ -27,6 +28,7 @@ XCTAssertEqual(mbglOptions.maxzoom, 99); XCTAssertEqual(mbglOptions.buffer, 1976); XCTAssertEqual(mbglOptions.tolerance, 0.42); + XCTAssertTrue(mbglOptions.lineMetrics); options = @{MGLShapeSourceOptionClustered: @"number 1"}; XCTAssertThrows(MGLGeoJSONOptionsFromDictionary(options)); |