From 477082db32077fc04005e6ee1ad5595d5511b0e9 Mon Sep 17 00:00:00 2001 From: Benedict Strube Date: Mon, 31 Jan 2022 18:48:11 +0100 Subject: [PATCH] feat(lineMetrics): added source property `lineMetrics` In order to use line gradients, the option `lineMetrics` is needed. On iOS side, this is achieved by setting MGLShapeSourceOptionLineDistanceMetrics(https://mapbox.github.io/mapbox-gl-native/macos/0.12.0/Other%20Constants.html#/c:@MGLShapeSourceOptionLineDistanceMetrics) and on Android it can be set with `withLineMetrics` on the `GeoJsonOptions`. The option `lineMetrics` was added to the `GeoJSONSource` API object and is used in the `addSource(...)` methods on iOS and Android as described above. --- src/ui-mapbox/common.ts | 1 + src/ui-mapbox/index.android.ts | 5 +++++ src/ui-mapbox/index.ios.ts | 4 +++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/ui-mapbox/common.ts b/src/ui-mapbox/common.ts index e64fba1..a83ed10 100755 --- a/src/ui-mapbox/common.ts +++ b/src/ui-mapbox/common.ts @@ -342,6 +342,7 @@ export interface GeoJSONSource extends Source { data?: any; minzoom?: number; maxzoom?: number; + lineMetrics?: boolean; cluster?: { radius; maxZoom; diff --git a/src/ui-mapbox/index.android.ts b/src/ui-mapbox/index.android.ts index 8e6d60e..4787e2e 100755 --- a/src/ui-mapbox/index.android.ts +++ b/src/ui-mapbox/index.android.ts @@ -2505,6 +2505,11 @@ export class Mapbox extends MapboxCommon implements MapboxApi { if (options.maxzoom) { geojsonOptions.withMaxZoom(options.maxzoom); } + + if (options.lineMetrics !== undefined) { + geojsonOptions.withLineMetrics(options.lineMetrics); + } + if (options.cluster) { geojsonOptions .withCluster(true) diff --git a/src/ui-mapbox/index.ios.ts b/src/ui-mapbox/index.ios.ts index e7769b4..5781889 100755 --- a/src/ui-mapbox/index.ios.ts +++ b/src/ui-mapbox/index.ios.ts @@ -2773,7 +2773,9 @@ export class Mapbox extends MapboxCommon implements MapboxApi { if (options.maxzoom !== undefined) { sourceOptions[MGLShapeSourceOptionMaximumZoomLevel] = options.maxzoom; } - + if (options.lineMetrics !== undefined) { + sourceOptions[MGLShapeSourceOptionLineDistanceMetrics] = options.lineMetrics; + } if (options.cluster) { sourceOptions[MGLShapeSourceOptionClustered] = true; sourceOptions[MGLShapeSourceOptionClusterRadius] = options.cluster.radius || 40;