Skip to content

Commit 7003fb2

Browse files
evil159jush
authored andcommitted
[maps-ios][maps-android] Expose line cutout opacity and width (#5884)
This PR expose experimental `LineLayer.lineCutoutOpacity` and `LineLayer.lineCutoutWidth` and showcases usage in dynamic view annotation example. | iOS | Android | |--------|--------| | <img width="300" alt="Screenshot 2025-08-15 at 12 57 07" src="https://github.com/user-attachments/assets/b956f04a-80c3-41fe-944b-9e53a59adcb3" /> | <img width="300" alt="Screenshot_1755251828" src="https://github.com/user-attachments/assets/c544a18d-6a72-4590-b120-67013bf41d8c" /> | Addresses: https://mapbox.atlassian.net/browse/MAPSAND-2292 and https://mapbox.atlassian.net/browse/MAPSIOS-1948 cc @mapbox/maps-ios cc @mapbox/maps-android --------- Co-authored-by: Ramon <[email protected]> GitOrigin-RevId: f264ec16c9acbad90e8115d429652bfac73179bc
1 parent 19b5db1 commit 7003fb2

File tree

15 files changed

+1057
-0
lines changed

15 files changed

+1057
-0
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
Mapbox welcomes participation and contributions from everyone.
44

55
# main
6+
## Features ✨ and improvements 🏁
7+
* Expose `LineLayer.lineCutoutOpacity` and `LineLayer.lineCutoutWidth` to make route lines visible through obstructing 3D buildings and other aboveground features.
68

79
# 11.15.0-beta.2 August 15, 2025
810
## Bug fixes 🐞

app/src/androidTest/java/com/mapbox/maps/testapp/annotation/generated/PolylineAnnotationManagerAndroidTest.kt

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/mapbox/maps/testapp/examples/markersandcallouts/viewannotation/DynamicViewAnnotationActivity.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ class DynamicViewAnnotationActivity : AppCompatActivity() {
177177
}
178178
}
179179

180+
@OptIn(com.mapbox.maps.MapboxExperimental::class)
180181
private fun MapboxMap.initStyleWithLayers(onLoaded: (Style) -> Unit) {
181182
refreshRoutes()
182183

@@ -189,13 +190,19 @@ class DynamicViewAnnotationActivity : AppCompatActivity() {
189190
// layer for alternative route
190191
+routeLayerAlt.apply {
191192
lineColor(Color.parseColor("#FF999999"))
193+
// make map elements around (30m) route line visible through obstructing 3D buildings and other aboveground features
194+
lineCutoutWidth(30.0)
195+
lineCutoutOpacity(0.2)
192196
lineWidth(12.0)
193197
lineBorderWidth(2.0)
194198
lineBorderColor(Color.parseColor("#FF333333"))
195199
}
196200
// layer for main route
197201
+routeLayerMain.apply {
198202
lineColor(Color.parseColor("#FF57A9FB"))
203+
// make map elements around (30m) route line visible through obstructing 3D buildings and other aboveground features
204+
lineCutoutWidth(30.0)
205+
lineCutoutOpacity(0.2)
199206
lineWidth(12.0)
200207
lineCap(LineCap.ROUND)
201208
lineBorderWidth(2.0)

extension-compose/api/Release/metalava.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -959,6 +959,8 @@ package com.mapbox.maps.extension.compose.annotation.generated {
959959
method public androidx.compose.ui.graphics.Color? getLineColor();
960960
method public String? getLineColorUseTheme();
961961
method public Double? getLineCrossSlope();
962+
method public Double? getLineCutoutOpacity();
963+
method public Double? getLineCutoutWidth();
962964
method public java.util.List<java.lang.Double>? getLineDasharray();
963965
method public Double? getLineDepthOcclusionFactor();
964966
method public com.mapbox.maps.extension.style.layers.properties.generated.LineElevationReference? getLineElevationReference();
@@ -994,6 +996,8 @@ package com.mapbox.maps.extension.compose.annotation.generated {
994996
method public void setLineColor(androidx.compose.ui.graphics.Color?);
995997
method public void setLineColorUseTheme(String?);
996998
method public void setLineCrossSlope(Double?);
999+
method public void setLineCutoutOpacity(Double?);
1000+
method public void setLineCutoutWidth(Double?);
9971001
method public void setLineDasharray(java.util.List<java.lang.Double>?);
9981002
method public void setLineDepthOcclusionFactor(Double?);
9991003
method public void setLineElevationReference(com.mapbox.maps.extension.style.layers.properties.generated.LineElevationReference?);
@@ -1029,6 +1033,8 @@ package com.mapbox.maps.extension.compose.annotation.generated {
10291033
property public final androidx.compose.ui.graphics.Color? lineColor;
10301034
property public final String? lineColorUseTheme;
10311035
property public final Double? lineCrossSlope;
1036+
property public final Double? lineCutoutOpacity;
1037+
property public final Double? lineCutoutWidth;
10321038
property public final java.util.List<java.lang.Double>? lineDasharray;
10331039
property public final Double? lineDepthOcclusionFactor;
10341040
property public final com.mapbox.maps.extension.style.layers.properties.generated.LineElevationReference? lineElevationReference;
@@ -2843,6 +2849,10 @@ package com.mapbox.maps.extension.compose.style.layers.generated {
28432849
method public com.mapbox.maps.extension.compose.style.Transition getLineColorTransition();
28442850
method public com.mapbox.maps.extension.compose.style.StringValue getLineColorUseTheme();
28452851
method public com.mapbox.maps.extension.compose.style.DoubleValue getLineCrossSlope();
2852+
method public com.mapbox.maps.extension.compose.style.DoubleValue getLineCutoutOpacity();
2853+
method public com.mapbox.maps.extension.compose.style.Transition getLineCutoutOpacityTransition();
2854+
method public com.mapbox.maps.extension.compose.style.DoubleValue getLineCutoutWidth();
2855+
method public com.mapbox.maps.extension.compose.style.Transition getLineCutoutWidthTransition();
28462856
method public com.mapbox.maps.extension.compose.style.DoubleListValue getLineDasharray();
28472857
method public com.mapbox.maps.extension.compose.style.DoubleValue getLineDepthOcclusionFactor();
28482858
method public com.mapbox.maps.extension.compose.style.Transition getLineDepthOcclusionFactorTransition();
@@ -2895,6 +2905,10 @@ package com.mapbox.maps.extension.compose.style.layers.generated {
28952905
method public void setLineColorTransition(com.mapbox.maps.extension.compose.style.Transition);
28962906
method public void setLineColorUseTheme(com.mapbox.maps.extension.compose.style.StringValue);
28972907
method public void setLineCrossSlope(com.mapbox.maps.extension.compose.style.DoubleValue);
2908+
method public void setLineCutoutOpacity(com.mapbox.maps.extension.compose.style.DoubleValue);
2909+
method public void setLineCutoutOpacityTransition(com.mapbox.maps.extension.compose.style.Transition);
2910+
method public void setLineCutoutWidth(com.mapbox.maps.extension.compose.style.DoubleValue);
2911+
method public void setLineCutoutWidthTransition(com.mapbox.maps.extension.compose.style.Transition);
28982912
method public void setLineDasharray(com.mapbox.maps.extension.compose.style.DoubleListValue);
28992913
method public void setLineDepthOcclusionFactor(com.mapbox.maps.extension.compose.style.DoubleValue);
29002914
method public void setLineDepthOcclusionFactorTransition(com.mapbox.maps.extension.compose.style.Transition);
@@ -2947,6 +2961,10 @@ package com.mapbox.maps.extension.compose.style.layers.generated {
29472961
property public final com.mapbox.maps.extension.compose.style.Transition lineColorTransition;
29482962
property public final com.mapbox.maps.extension.compose.style.StringValue lineColorUseTheme;
29492963
property public final com.mapbox.maps.extension.compose.style.DoubleValue lineCrossSlope;
2964+
property public final com.mapbox.maps.extension.compose.style.DoubleValue lineCutoutOpacity;
2965+
property public final com.mapbox.maps.extension.compose.style.Transition lineCutoutOpacityTransition;
2966+
property public final com.mapbox.maps.extension.compose.style.DoubleValue lineCutoutWidth;
2967+
property public final com.mapbox.maps.extension.compose.style.Transition lineCutoutWidthTransition;
29502968
property public final com.mapbox.maps.extension.compose.style.DoubleListValue lineDasharray;
29512969
property public final com.mapbox.maps.extension.compose.style.DoubleValue lineDepthOcclusionFactor;
29522970
property public final com.mapbox.maps.extension.compose.style.Transition lineDepthOcclusionFactorTransition;

extension-compose/api/extension-compose.api

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -768,6 +768,8 @@ public final class com/mapbox/maps/extension/compose/annotation/generated/Polyli
768768
public final fun getLineColor-QN2ZGVo ()Landroidx/compose/ui/graphics/Color;
769769
public final fun getLineColorUseTheme ()Ljava/lang/String;
770770
public final fun getLineCrossSlope ()Ljava/lang/Double;
771+
public final fun getLineCutoutOpacity ()Ljava/lang/Double;
772+
public final fun getLineCutoutWidth ()Ljava/lang/Double;
771773
public final fun getLineDasharray ()Ljava/util/List;
772774
public final fun getLineDepthOcclusionFactor ()Ljava/lang/Double;
773775
public final fun getLineElevationReference ()Lcom/mapbox/maps/extension/style/layers/properties/generated/LineElevationReference;
@@ -803,6 +805,8 @@ public final class com/mapbox/maps/extension/compose/annotation/generated/Polyli
803805
public final fun setLineColor-Y2TPw74 (Landroidx/compose/ui/graphics/Color;)V
804806
public final fun setLineColorUseTheme (Ljava/lang/String;)V
805807
public final fun setLineCrossSlope (Ljava/lang/Double;)V
808+
public final fun setLineCutoutOpacity (Ljava/lang/Double;)V
809+
public final fun setLineCutoutWidth (Ljava/lang/Double;)V
806810
public final fun setLineDasharray (Ljava/util/List;)V
807811
public final fun setLineDepthOcclusionFactor (Ljava/lang/Double;)V
808812
public final fun setLineElevationReference (Lcom/mapbox/maps/extension/style/layers/properties/generated/LineElevationReference;)V
@@ -2404,6 +2408,10 @@ public final class com/mapbox/maps/extension/compose/style/layers/generated/Line
24042408
public final fun getLineColorTransition ()Lcom/mapbox/maps/extension/compose/style/Transition;
24052409
public final fun getLineColorUseTheme ()Lcom/mapbox/maps/extension/compose/style/StringValue;
24062410
public final fun getLineCrossSlope ()Lcom/mapbox/maps/extension/compose/style/DoubleValue;
2411+
public final fun getLineCutoutOpacity ()Lcom/mapbox/maps/extension/compose/style/DoubleValue;
2412+
public final fun getLineCutoutOpacityTransition ()Lcom/mapbox/maps/extension/compose/style/Transition;
2413+
public final fun getLineCutoutWidth ()Lcom/mapbox/maps/extension/compose/style/DoubleValue;
2414+
public final fun getLineCutoutWidthTransition ()Lcom/mapbox/maps/extension/compose/style/Transition;
24072415
public final fun getLineDasharray ()Lcom/mapbox/maps/extension/compose/style/DoubleListValue;
24082416
public final fun getLineDepthOcclusionFactor ()Lcom/mapbox/maps/extension/compose/style/DoubleValue;
24092417
public final fun getLineDepthOcclusionFactorTransition ()Lcom/mapbox/maps/extension/compose/style/Transition;
@@ -2456,6 +2464,10 @@ public final class com/mapbox/maps/extension/compose/style/layers/generated/Line
24562464
public final fun setLineColorTransition (Lcom/mapbox/maps/extension/compose/style/Transition;)V
24572465
public final fun setLineColorUseTheme (Lcom/mapbox/maps/extension/compose/style/StringValue;)V
24582466
public final fun setLineCrossSlope (Lcom/mapbox/maps/extension/compose/style/DoubleValue;)V
2467+
public final fun setLineCutoutOpacity (Lcom/mapbox/maps/extension/compose/style/DoubleValue;)V
2468+
public final fun setLineCutoutOpacityTransition (Lcom/mapbox/maps/extension/compose/style/Transition;)V
2469+
public final fun setLineCutoutWidth (Lcom/mapbox/maps/extension/compose/style/DoubleValue;)V
2470+
public final fun setLineCutoutWidthTransition (Lcom/mapbox/maps/extension/compose/style/Transition;)V
24592471
public final fun setLineDasharray (Lcom/mapbox/maps/extension/compose/style/DoubleListValue;)V
24602472
public final fun setLineDepthOcclusionFactor (Lcom/mapbox/maps/extension/compose/style/DoubleValue;)V
24612473
public final fun setLineDepthOcclusionFactorTransition (Lcom/mapbox/maps/extension/compose/style/Transition;)V

extension-compose/src/main/java/com/mapbox/maps/extension/compose/annotation/generated/PolylineAnnotationGroupState.kt

Lines changed: 26 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

extension-compose/src/main/java/com/mapbox/maps/extension/compose/style/layers/generated/LineLayerState.kt

Lines changed: 44 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)