Skip to content

Commit

Permalink
[style] Introduce line-trim-offset property for LineLayer. (#1252)
Browse files Browse the repository at this point in the history
* [style] Introduce line-trim-offset property for LineLayer.

* Update API files.

* Update changelog.

* Update line gradient activity to use trim offset property.
  • Loading branch information
pengdev authored Apr 4, 2022
1 parent 60a2e17 commit d1fc313
Show file tree
Hide file tree
Showing 13 changed files with 323 additions and 9 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Mapbox welcomes participation and contributions from everyone.
* Add `MapboxMap#coordinateBoundsForCameraUnwrapped` method for API consistency. ([1222](https://github.com/mapbox/mapbox-maps-android/pull/1222))
* Add `LocationIndicatorLayer.bearingTransition` API to control transition of bearing property. ([1207](https://github.com/mapbox/mapbox-maps-android/pull/1207))
* Add `MapboxConcurrentGeometryModificationException` with detailed information instead of `ConcurrentModificationException` that is thrown when GeoJson data is mutated. ([1248](https://github.com/mapbox/mapbox-maps-android/pull/1248))
* Introduce `line-trim-offset` property for LineLayer. ([1252](https://github.com/mapbox/mapbox-maps-android/pull/1252))

## Bug fixes 🐞
* Fix PolygonAnnotation and PolylineAnnotation being distorted while dragging with 3D terrain. ([#1223](https://github.com/mapbox/mapbox-maps-android/pull/1223))
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ import com.mapbox.geojson.LineString
import com.mapbox.geojson.Point
import com.mapbox.maps.Style
import com.mapbox.maps.extension.style.expressions.dsl.generated.interpolate
import com.mapbox.maps.extension.style.layers.generated.LineLayer
import com.mapbox.maps.extension.style.layers.generated.lineLayer
import com.mapbox.maps.extension.style.layers.getLayerAs
import com.mapbox.maps.extension.style.layers.properties.generated.LineCap
import com.mapbox.maps.extension.style.layers.properties.generated.LineJoin
import com.mapbox.maps.extension.style.sources.generated.geoJsonSource
Expand All @@ -21,8 +23,14 @@ class LineGradientActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
val binding = ActivityLineGradientBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.mapView.getMapboxMap().loadStyle(createStyle()) {
Logger.d(TAG, "Style loaded: ${it.styleURI}")
binding.mapView.getMapboxMap().loadStyle(createStyle()) { style ->
Logger.d(TAG, "Style loaded: ${style.styleURI}")
// Increase trim offset when user click the increase trim offset button.
binding.trimOffsetButton.setOnClickListener {
val linelayer = style.getLayerAs<LineLayer>(LAYER_ID)
val lastTrimPosition = linelayer?.lineTrimOffset?.last() ?: 0.0
linelayer?.lineTrimOffset(listOf(0.0, (lastTrimPosition + 0.05).coerceAtMost(1.0)))
}
}
}

Expand Down
28 changes: 21 additions & 7 deletions app/src/main/res/layout/activity_line_gradient.xml
Original file line number Diff line number Diff line change
@@ -1,10 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<com.mapbox.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:mapbox="http://schemas.android.com/apk/res-auto"
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
mapbox:mapbox_cameraTargetLat="38.875"
mapbox:mapbox_cameraTargetLng="-77.035"
mapbox:mapbox_cameraZoom="12" />
android:layout_height="match_parent">

<com.mapbox.maps.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
mapbox:mapbox_cameraTargetLat="38.875"
mapbox:mapbox_cameraTargetLng="-77.035"
mapbox:mapbox_cameraZoom="12" />

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/trimOffsetButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/trim_offset"
mapbox:layout_constraintBottom_toBottomOf="parent"
mapbox:layout_constraintEnd_toEndOf="parent"
mapbox:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
3 changes: 3 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -159,4 +159,7 @@
<string name="set_tile_request_delay">Set tile request delay to 2 sec</string>
<string name="set_tile_network_request_delay">Set tile network delay to 2 sec</string>
<string name="follow">Follow</string>

<!-- Line trim offset -->
<string name="trim_offset">Increase trim offset</string>
</resources>

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions extension-style/api/extension-style.api
Original file line number Diff line number Diff line change
Expand Up @@ -1702,6 +1702,8 @@ public final class com/mapbox/maps/extension/style/layers/generated/LineLayer :
public final fun getLineTranslateAnchorAsExpression ()Lcom/mapbox/maps/extension/style/expressions/generated/Expression;
public final fun getLineTranslateAsExpression ()Lcom/mapbox/maps/extension/style/expressions/generated/Expression;
public final fun getLineTranslateTransition ()Lcom/mapbox/maps/extension/style/types/StyleTransition;
public final fun getLineTrimOffset ()Ljava/util/List;
public final fun getLineTrimOffsetAsExpression ()Lcom/mapbox/maps/extension/style/expressions/generated/Expression;
public final fun getLineWidth ()Ljava/lang/Double;
public final fun getLineWidthAsExpression ()Lcom/mapbox/maps/extension/style/expressions/generated/Expression;
public final fun getLineWidthTransition ()Lcom/mapbox/maps/extension/style/types/StyleTransition;
Expand Down Expand Up @@ -1756,6 +1758,8 @@ public final class com/mapbox/maps/extension/style/layers/generated/LineLayer :
public fun lineTranslateAnchor (Lcom/mapbox/maps/extension/style/layers/properties/generated/LineTranslateAnchor;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public fun lineTranslateTransition (Lcom/mapbox/maps/extension/style/types/StyleTransition;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public fun lineTranslateTransition (Lkotlin/jvm/functions/Function1;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public fun lineTrimOffset (Lcom/mapbox/maps/extension/style/expressions/generated/Expression;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public fun lineTrimOffset (Ljava/util/List;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public fun lineWidth (D)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public fun lineWidth (Lcom/mapbox/maps/extension/style/expressions/generated/Expression;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public fun lineWidthTransition (Lcom/mapbox/maps/extension/style/types/StyleTransition;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
Expand Down Expand Up @@ -1807,6 +1811,8 @@ public final class com/mapbox/maps/extension/style/layers/generated/LineLayer$Co
public final fun getDefaultLineTranslateAnchorAsExpression ()Lcom/mapbox/maps/extension/style/expressions/generated/Expression;
public final fun getDefaultLineTranslateAsExpression ()Lcom/mapbox/maps/extension/style/expressions/generated/Expression;
public final fun getDefaultLineTranslateTransition ()Lcom/mapbox/maps/extension/style/types/StyleTransition;
public final fun getDefaultLineTrimOffset ()Ljava/util/List;
public final fun getDefaultLineTrimOffsetAsExpression ()Lcom/mapbox/maps/extension/style/expressions/generated/Expression;
public final fun getDefaultLineWidth ()Ljava/lang/Double;
public final fun getDefaultLineWidthAsExpression ()Lcom/mapbox/maps/extension/style/expressions/generated/Expression;
public final fun getDefaultLineWidthTransition ()Lcom/mapbox/maps/extension/style/types/StyleTransition;
Expand Down Expand Up @@ -1863,6 +1869,8 @@ public abstract interface class com/mapbox/maps/extension/style/layers/generated
public abstract fun lineTranslateAnchor (Lcom/mapbox/maps/extension/style/layers/properties/generated/LineTranslateAnchor;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public abstract fun lineTranslateTransition (Lcom/mapbox/maps/extension/style/types/StyleTransition;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public abstract fun lineTranslateTransition (Lkotlin/jvm/functions/Function1;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public abstract fun lineTrimOffset (Lcom/mapbox/maps/extension/style/expressions/generated/Expression;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public abstract fun lineTrimOffset (Ljava/util/List;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public abstract fun lineWidth (D)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public abstract fun lineWidth (Lcom/mapbox/maps/extension/style/expressions/generated/Expression;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public abstract fun lineWidthTransition (Lcom/mapbox/maps/extension/style/types/StyleTransition;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
Expand All @@ -1885,6 +1893,7 @@ public final class com/mapbox/maps/extension/style/layers/generated/LineLayerDsl
public static synthetic fun lineRoundLimit$default (Lcom/mapbox/maps/extension/style/layers/generated/LineLayerDsl;DILjava/lang/Object;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public static synthetic fun lineTranslate$default (Lcom/mapbox/maps/extension/style/layers/generated/LineLayerDsl;Ljava/util/List;ILjava/lang/Object;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public static synthetic fun lineTranslateAnchor$default (Lcom/mapbox/maps/extension/style/layers/generated/LineLayerDsl;Lcom/mapbox/maps/extension/style/layers/properties/generated/LineTranslateAnchor;ILjava/lang/Object;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public static synthetic fun lineTrimOffset$default (Lcom/mapbox/maps/extension/style/layers/generated/LineLayerDsl;Ljava/util/List;ILjava/lang/Object;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
public static synthetic fun lineWidth$default (Lcom/mapbox/maps/extension/style/layers/generated/LineLayerDsl;DILjava/lang/Object;)Lcom/mapbox/maps/extension/style/layers/generated/LineLayer;
}

Expand Down
12 changes: 12 additions & 0 deletions extension-style/api/metalava.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1949,6 +1949,8 @@ package com.mapbox.maps.extension.style.layers.generated {
method public com.mapbox.maps.extension.style.expressions.generated.Expression? getLineTranslateAnchorAsExpression();
method public com.mapbox.maps.extension.style.expressions.generated.Expression? getLineTranslateAsExpression();
method public com.mapbox.maps.extension.style.types.StyleTransition? getLineTranslateTransition();
method public java.util.List<java.lang.Double>? getLineTrimOffset();
method public com.mapbox.maps.extension.style.expressions.generated.Expression? getLineTrimOffsetAsExpression();
method public Double? getLineWidth();
method public com.mapbox.maps.extension.style.expressions.generated.Expression? getLineWidthAsExpression();
method public com.mapbox.maps.extension.style.types.StyleTransition? getLineWidthTransition();
Expand Down Expand Up @@ -2004,6 +2006,8 @@ package com.mapbox.maps.extension.style.layers.generated {
method public com.mapbox.maps.extension.style.layers.generated.LineLayer lineTranslateAnchor(com.mapbox.maps.extension.style.expressions.generated.Expression lineTranslateAnchor);
method public com.mapbox.maps.extension.style.layers.generated.LineLayer lineTranslateTransition(com.mapbox.maps.extension.style.types.StyleTransition options);
method public com.mapbox.maps.extension.style.layers.generated.LineLayer lineTranslateTransition(kotlin.jvm.functions.Function1<? super com.mapbox.maps.extension.style.types.StyleTransition.Builder,kotlin.Unit> block);
method public com.mapbox.maps.extension.style.layers.generated.LineLayer lineTrimOffset(java.util.List<java.lang.Double> lineTrimOffset);
method public com.mapbox.maps.extension.style.layers.generated.LineLayer lineTrimOffset(com.mapbox.maps.extension.style.expressions.generated.Expression lineTrimOffset);
method public com.mapbox.maps.extension.style.layers.generated.LineLayer lineWidth(double lineWidth);
method public com.mapbox.maps.extension.style.layers.generated.LineLayer lineWidth(com.mapbox.maps.extension.style.expressions.generated.Expression lineWidth);
method public com.mapbox.maps.extension.style.layers.generated.LineLayer lineWidthTransition(com.mapbox.maps.extension.style.types.StyleTransition options);
Expand Down Expand Up @@ -2052,6 +2056,8 @@ package com.mapbox.maps.extension.style.layers.generated {
property public final com.mapbox.maps.extension.style.expressions.generated.Expression? lineTranslateAnchorAsExpression;
property public final com.mapbox.maps.extension.style.expressions.generated.Expression? lineTranslateAsExpression;
property public final com.mapbox.maps.extension.style.types.StyleTransition? lineTranslateTransition;
property public final java.util.List<java.lang.Double>? lineTrimOffset;
property public final com.mapbox.maps.extension.style.expressions.generated.Expression? lineTrimOffsetAsExpression;
property public final Double? lineWidth;
property public final com.mapbox.maps.extension.style.expressions.generated.Expression? lineWidthAsExpression;
property public final com.mapbox.maps.extension.style.types.StyleTransition? lineWidthTransition;
Expand Down Expand Up @@ -2101,6 +2107,8 @@ package com.mapbox.maps.extension.style.layers.generated {
method public com.mapbox.maps.extension.style.expressions.generated.Expression? getDefaultLineTranslateAnchorAsExpression();
method public com.mapbox.maps.extension.style.expressions.generated.Expression? getDefaultLineTranslateAsExpression();
method public com.mapbox.maps.extension.style.types.StyleTransition? getDefaultLineTranslateTransition();
method public java.util.List<java.lang.Double>? getDefaultLineTrimOffset();
method public com.mapbox.maps.extension.style.expressions.generated.Expression? getDefaultLineTrimOffsetAsExpression();
method public Double? getDefaultLineWidth();
method public com.mapbox.maps.extension.style.expressions.generated.Expression? getDefaultLineWidthAsExpression();
method public com.mapbox.maps.extension.style.types.StyleTransition? getDefaultLineWidthTransition();
Expand Down Expand Up @@ -2144,6 +2152,8 @@ package com.mapbox.maps.extension.style.layers.generated {
property public final com.mapbox.maps.extension.style.expressions.generated.Expression? defaultLineTranslateAnchorAsExpression;
property public final com.mapbox.maps.extension.style.expressions.generated.Expression? defaultLineTranslateAsExpression;
property public final com.mapbox.maps.extension.style.types.StyleTransition? defaultLineTranslateTransition;
property public final java.util.List<java.lang.Double>? defaultLineTrimOffset;
property public final com.mapbox.maps.extension.style.expressions.generated.Expression? defaultLineTrimOffsetAsExpression;
property public final Double? defaultLineWidth;
property public final com.mapbox.maps.extension.style.expressions.generated.Expression? defaultLineWidthAsExpression;
property public final com.mapbox.maps.extension.style.types.StyleTransition? defaultLineWidthTransition;
Expand Down Expand Up @@ -2200,6 +2210,8 @@ package com.mapbox.maps.extension.style.layers.generated {
method public com.mapbox.maps.extension.style.layers.generated.LineLayer lineTranslateAnchor(com.mapbox.maps.extension.style.expressions.generated.Expression lineTranslateAnchor);
method public com.mapbox.maps.extension.style.layers.generated.LineLayer lineTranslateTransition(com.mapbox.maps.extension.style.types.StyleTransition options);
method public com.mapbox.maps.extension.style.layers.generated.LineLayer lineTranslateTransition(kotlin.jvm.functions.Function1<? super com.mapbox.maps.extension.style.types.StyleTransition.Builder,kotlin.Unit> block);
method public com.mapbox.maps.extension.style.layers.generated.LineLayer lineTrimOffset(java.util.List<java.lang.Double> lineTrimOffset = listOf(0.0, 0.0));
method public com.mapbox.maps.extension.style.layers.generated.LineLayer lineTrimOffset(com.mapbox.maps.extension.style.expressions.generated.Expression lineTrimOffset);
method public com.mapbox.maps.extension.style.layers.generated.LineLayer lineWidth(double lineWidth = 1.0);
method public com.mapbox.maps.extension.style.layers.generated.LineLayer lineWidth(com.mapbox.maps.extension.style.expressions.generated.Expression lineWidth);
method public com.mapbox.maps.extension.style.layers.generated.LineLayer lineWidthTransition(com.mapbox.maps.extension.style.types.StyleTransition options);
Expand Down
Loading

0 comments on commit d1fc313

Please sign in to comment.