From 2b07e16254f12b5c20536d50e6d3515049a4a194 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 2 Feb 2026 17:13:25 +0100 Subject: [PATCH 1/2] Update Maplibre dependency to version 11.6.1 https://github.com/maplibre/maplibre-native/blob/main/platform/android/CHANGELOG.md#1161 --- dependencies.gradle | 4 +-- .../java/im/vector/app/VectorApplication.kt | 4 +-- .../location/LocationSharingFragment.kt | 2 +- .../app/features/location/MapBoxMapExt.kt | 18 ++++++------ .../app/features/location/MapTilerMapView.kt | 24 ++++++++-------- .../domain/usecase/CompareLocationsUseCase.kt | 2 +- .../live/map/LiveLocationMapViewFragment.kt | 28 +++++++++---------- .../preview/LocationPreviewFragment.kt | 2 +- 8 files changed, 42 insertions(+), 42 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index d3e839a118d..d3ab7bfd210 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -132,8 +132,8 @@ ext.libs = [ 'mavericksTesting' : "com.airbnb.android:mavericks-testing:$mavericks" ], maplibre : [ - 'androidSdk' : "org.maplibre.gl:android-sdk:10.0.2", - 'pluginAnnotation' : "org.maplibre.gl:android-plugin-annotation-v9:1.0.0" + 'androidSdk' : "org.maplibre.gl:android-sdk:11.6.1", + 'pluginAnnotation' : "org.maplibre.gl:android-plugin-annotation-v9:3.0.2" ], mockk : [ 'mockk' : "io.mockk:mockk:$mockk", diff --git a/vector-app/src/main/java/im/vector/app/VectorApplication.kt b/vector-app/src/main/java/im/vector/app/VectorApplication.kt index 84b87b14040..f051feffeef 100644 --- a/vector-app/src/main/java/im/vector/app/VectorApplication.kt +++ b/vector-app/src/main/java/im/vector/app/VectorApplication.kt @@ -33,7 +33,6 @@ import com.airbnb.mvrx.Mavericks import com.facebook.stetho.Stetho import com.gabrielittner.threetenbp.LazyThreeTen import com.github.rubensousa.gravitysnaphelper.GravitySnapHelper -import com.mapbox.mapboxsdk.Mapbox import com.vanniktech.emoji.EmojiManager import com.vanniktech.emoji.google.GoogleEmojiProvider import dagger.hilt.android.HiltAndroidApp @@ -62,6 +61,7 @@ import im.vector.app.features.themes.ThemeUtils import im.vector.app.features.version.VersionProvider import im.vector.application.R import org.jitsi.meet.sdk.log.JitsiMeetDefaultLogHandler +import org.maplibre.android.MapLibre import org.matrix.android.sdk.api.Matrix import org.matrix.android.sdk.api.auth.AuthenticationService import timber.log.Timber @@ -223,7 +223,7 @@ class VectorApplication : EmojiManager.install(GoogleEmojiProvider()) // Initialize Mapbox before inflating mapViews - Mapbox.getInstance(this) + MapLibre.getInstance(this) initMemoryLeakAnalysis() } diff --git a/vector/src/main/java/im/vector/app/features/location/LocationSharingFragment.kt b/vector/src/main/java/im/vector/app/features/location/LocationSharingFragment.kt index d5b0850ce8a..2995a37ec2d 100644 --- a/vector/src/main/java/im/vector/app/features/location/LocationSharingFragment.kt +++ b/vector/src/main/java/im/vector/app/features/location/LocationSharingFragment.kt @@ -21,7 +21,7 @@ import androidx.lifecycle.lifecycleScope import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.mapbox.mapboxsdk.maps.MapView +import org.maplibre.android.maps.MapView import dagger.hilt.android.AndroidEntryPoint import im.vector.app.core.platform.VectorBaseBottomSheetDialogFragment import im.vector.app.core.platform.VectorBaseFragment diff --git a/vector/src/main/java/im/vector/app/features/location/MapBoxMapExt.kt b/vector/src/main/java/im/vector/app/features/location/MapBoxMapExt.kt index c187757dc70..be88d5809b5 100644 --- a/vector/src/main/java/im/vector/app/features/location/MapBoxMapExt.kt +++ b/vector/src/main/java/im/vector/app/features/location/MapBoxMapExt.kt @@ -7,14 +7,14 @@ package im.vector.app.features.location -import com.mapbox.mapboxsdk.camera.CameraPosition -import com.mapbox.mapboxsdk.camera.CameraUpdateFactory -import com.mapbox.mapboxsdk.constants.MapboxConstants -import com.mapbox.mapboxsdk.geometry.LatLng -import com.mapbox.mapboxsdk.geometry.LatLngBounds -import com.mapbox.mapboxsdk.maps.MapboxMap +import org.maplibre.android.camera.CameraPosition +import org.maplibre.android.camera.CameraUpdateFactory +import org.maplibre.android.constants.MapLibreConstants +import org.maplibre.android.geometry.LatLng +import org.maplibre.android.geometry.LatLngBounds +import org.maplibre.android.maps.MapLibreMap -fun MapboxMap?.zoomToLocation(locationData: LocationData, preserveCurrentZoomLevel: Boolean = false) { +fun MapLibreMap?.zoomToLocation(locationData: LocationData, preserveCurrentZoomLevel: Boolean = false) { val zoomLevel = if (preserveCurrentZoomLevel && this?.cameraPosition != null) { cameraPosition.zoom } else { @@ -28,11 +28,11 @@ fun MapboxMap?.zoomToLocation(locationData: LocationData, preserveCurrentZoomLev this?.easeCamera(cameraUpdate) } -fun MapboxMap?.zoomToBounds(latLngBounds: LatLngBounds) { +fun MapLibreMap?.zoomToBounds(latLngBounds: LatLngBounds) { this?.getCameraForLatLngBounds(latLngBounds)?.let { camPosition -> // unZoom a little to avoid having pins exactly at the edges of the map cameraPosition = CameraPosition.Builder(camPosition) - .zoom((camPosition.zoom - 1).coerceAtLeast(MapboxConstants.MINIMUM_ZOOM.toDouble())) + .zoom((camPosition.zoom - 1).coerceAtLeast(MapLibreConstants.MINIMUM_ZOOM.toDouble())) .build() } } diff --git a/vector/src/main/java/im/vector/app/features/location/MapTilerMapView.kt b/vector/src/main/java/im/vector/app/features/location/MapTilerMapView.kt index 15af86a4da7..7e8d0f1867c 100644 --- a/vector/src/main/java/im/vector/app/features/location/MapTilerMapView.kt +++ b/vector/src/main/java/im/vector/app/features/location/MapTilerMapView.kt @@ -19,13 +19,13 @@ import androidx.core.graphics.drawable.toBitmap import androidx.core.view.marginBottom import androidx.core.view.marginTop import androidx.core.view.updateLayoutParams -import com.mapbox.mapboxsdk.geometry.LatLng -import com.mapbox.mapboxsdk.maps.MapView -import com.mapbox.mapboxsdk.maps.MapboxMap -import com.mapbox.mapboxsdk.maps.Style -import com.mapbox.mapboxsdk.plugins.annotation.SymbolManager -import com.mapbox.mapboxsdk.plugins.annotation.SymbolOptions -import com.mapbox.mapboxsdk.style.layers.Property +import org.maplibre.android.geometry.LatLng +import org.maplibre.android.maps.MapView +import org.maplibre.android.maps.MapLibreMap +import org.maplibre.android.maps.Style +import org.maplibre.android.plugins.annotation.SymbolManager +import org.maplibre.android.plugins.annotation.SymbolOptions +import org.maplibre.android.style.layers.Property import im.vector.app.R import im.vector.app.core.utils.DimensionConverter import im.vector.lib.strings.CommonStrings @@ -42,7 +42,7 @@ class MapTilerMapView @JvmOverloads constructor( private var pendingState: MapState? = null data class MapRefs( - val map: MapboxMap, + val map: MapLibreMap, val symbolManager: SymbolManager, val style: Style ) @@ -94,7 +94,7 @@ class MapTilerMapView @JvmOverloads constructor( } } - private fun initMapStyle(map: MapboxMap, url: String) { + private fun initMapStyle(map: MapLibreMap, url: String) { map.setStyle(url) { style -> val symbolManager = SymbolManager(this, map, style) symbolManager.iconAllowOverlap = true @@ -108,7 +108,7 @@ class MapTilerMapView @JvmOverloads constructor( } } - private fun initLocateButton(map: MapboxMap) { + private fun initLocateButton(map: MapLibreMap) { if (showLocationButton) { addView(locateButton) adjustCompassButton(map) @@ -132,7 +132,7 @@ class MapTilerMapView @JvmOverloads constructor( } } - private fun adjustCompassButton(map: MapboxMap) { + private fun adjustCompassButton(map: MapLibreMap) { locateButton.post { val marginTop = locateButton.height + locateButton.marginTop + locateButton.marginBottom val marginRight = context.resources.getDimensionPixelOffset(im.vector.lib.ui.styles.R.dimen.location_sharing_compass_button_margin_horizontal) @@ -140,7 +140,7 @@ class MapTilerMapView @JvmOverloads constructor( } } - private fun listenCameraMove(map: MapboxMap, locationTargetChangeListener: LocationTargetChangeListener?) { + private fun listenCameraMove(map: MapLibreMap, locationTargetChangeListener: LocationTargetChangeListener?) { map.addOnCameraMoveListener { notifyLocationOfMapCenter(locationTargetChangeListener) } diff --git a/vector/src/main/java/im/vector/app/features/location/domain/usecase/CompareLocationsUseCase.kt b/vector/src/main/java/im/vector/app/features/location/domain/usecase/CompareLocationsUseCase.kt index 9c17ea8be30..1ac5bd4754f 100644 --- a/vector/src/main/java/im/vector/app/features/location/domain/usecase/CompareLocationsUseCase.kt +++ b/vector/src/main/java/im/vector/app/features/location/domain/usecase/CompareLocationsUseCase.kt @@ -7,7 +7,7 @@ package im.vector.app.features.location.domain.usecase -import com.mapbox.mapboxsdk.geometry.LatLng +import org.maplibre.android.geometry.LatLng import im.vector.app.features.location.LocationData import kotlinx.coroutines.withContext import org.matrix.android.sdk.api.session.Session diff --git a/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewFragment.kt b/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewFragment.kt index dae3fe5acbc..b121c894801 100644 --- a/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewFragment.kt +++ b/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewFragment.kt @@ -21,18 +21,18 @@ import androidx.lifecycle.lifecycleScope import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.mapbox.mapboxsdk.geometry.LatLng -import com.mapbox.mapboxsdk.geometry.LatLngBounds -import com.mapbox.mapboxsdk.maps.MapView -import com.mapbox.mapboxsdk.maps.MapboxMap -import com.mapbox.mapboxsdk.maps.MapboxMapOptions -import com.mapbox.mapboxsdk.maps.Style -import com.mapbox.mapboxsdk.maps.SupportMapFragment -import com.mapbox.mapboxsdk.plugins.annotation.OnSymbolClickListener -import com.mapbox.mapboxsdk.plugins.annotation.Symbol -import com.mapbox.mapboxsdk.plugins.annotation.SymbolManager -import com.mapbox.mapboxsdk.plugins.annotation.SymbolOptions -import com.mapbox.mapboxsdk.style.layers.Property +import org.maplibre.android.geometry.LatLng +import org.maplibre.android.geometry.LatLngBounds +import org.maplibre.android.maps.MapView +import org.maplibre.android.maps.MapLibreMap +import org.maplibre.android.maps.MapLibreMapOptions +import org.maplibre.android.maps.Style +import org.maplibre.android.maps.SupportMapFragment +import org.maplibre.android.plugins.annotation.OnSymbolClickListener +import org.maplibre.android.plugins.annotation.Symbol +import org.maplibre.android.plugins.annotation.SymbolManager +import org.maplibre.android.plugins.annotation.SymbolOptions +import org.maplibre.android.style.layers.Property import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R import im.vector.app.core.extensions.addChildFragment @@ -74,7 +74,7 @@ class LiveLocationMapViewFragment : private val viewModel: LiveLocationMapViewModel by fragmentViewModel() - private var mapboxMap: WeakReference? = null + private var mapboxMap: WeakReference? = null private var mapView: MapView? = null private var symbolManager: SymbolManager? = null private var mapStyle: Style? = null @@ -214,7 +214,7 @@ class LiveLocationMapViewFragment : private fun getOrCreateSupportMapFragment() = childFragmentManager.findFragmentByTag(MAP_FRAGMENT_TAG) as? SupportMapFragment ?: run { - val options = MapboxMapOptions.createFromAttributes(requireContext(), null) + val options = MapLibreMapOptions.createFromAttributes(requireContext(), null) SupportMapFragment.newInstance(options) .also { addChildFragment(R.id.liveLocationMapFragmentContainer, it, tag = MAP_FRAGMENT_TAG) } } diff --git a/vector/src/main/java/im/vector/app/features/location/preview/LocationPreviewFragment.kt b/vector/src/main/java/im/vector/app/features/location/preview/LocationPreviewFragment.kt index 62ea85ee9fe..1e451fe8622 100644 --- a/vector/src/main/java/im/vector/app/features/location/preview/LocationPreviewFragment.kt +++ b/vector/src/main/java/im/vector/app/features/location/preview/LocationPreviewFragment.kt @@ -17,7 +17,7 @@ import androidx.lifecycle.lifecycleScope import com.airbnb.mvrx.args import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState -import com.mapbox.mapboxsdk.maps.MapView +import org.maplibre.android.maps.MapView import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R import im.vector.app.core.platform.VectorBaseFragment From 1cda5eb8f853e75f2118ba4ce939f7e69ab34317 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 2 Feb 2026 18:20:11 +0100 Subject: [PATCH 2/2] Reorder import statements --- .../location/LocationSharingFragment.kt | 2 +- .../app/features/location/MapTilerMapView.kt | 8 +++---- .../domain/usecase/CompareLocationsUseCase.kt | 2 +- .../live/map/LiveLocationMapViewFragment.kt | 24 +++++++++---------- .../preview/LocationPreviewFragment.kt | 2 +- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/location/LocationSharingFragment.kt b/vector/src/main/java/im/vector/app/features/location/LocationSharingFragment.kt index 2995a37ec2d..069c6686c81 100644 --- a/vector/src/main/java/im/vector/app/features/location/LocationSharingFragment.kt +++ b/vector/src/main/java/im/vector/app/features/location/LocationSharingFragment.kt @@ -21,7 +21,6 @@ import androidx.lifecycle.lifecycleScope import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.maplibre.android.maps.MapView import dagger.hilt.android.AndroidEntryPoint import im.vector.app.core.platform.VectorBaseBottomSheetDialogFragment import im.vector.app.core.platform.VectorBaseFragment @@ -39,6 +38,7 @@ import im.vector.app.features.location.option.LocationSharingOption import im.vector.app.features.settings.VectorPreferences import im.vector.lib.strings.CommonStrings import kotlinx.coroutines.launch +import org.maplibre.android.maps.MapView import org.matrix.android.sdk.api.util.MatrixItem import java.lang.ref.WeakReference import javax.inject.Inject diff --git a/vector/src/main/java/im/vector/app/features/location/MapTilerMapView.kt b/vector/src/main/java/im/vector/app/features/location/MapTilerMapView.kt index 7e8d0f1867c..cfce7dffec3 100644 --- a/vector/src/main/java/im/vector/app/features/location/MapTilerMapView.kt +++ b/vector/src/main/java/im/vector/app/features/location/MapTilerMapView.kt @@ -19,16 +19,16 @@ import androidx.core.graphics.drawable.toBitmap import androidx.core.view.marginBottom import androidx.core.view.marginTop import androidx.core.view.updateLayoutParams +import im.vector.app.R +import im.vector.app.core.utils.DimensionConverter +import im.vector.lib.strings.CommonStrings import org.maplibre.android.geometry.LatLng -import org.maplibre.android.maps.MapView import org.maplibre.android.maps.MapLibreMap +import org.maplibre.android.maps.MapView import org.maplibre.android.maps.Style import org.maplibre.android.plugins.annotation.SymbolManager import org.maplibre.android.plugins.annotation.SymbolOptions import org.maplibre.android.style.layers.Property -import im.vector.app.R -import im.vector.app.core.utils.DimensionConverter -import im.vector.lib.strings.CommonStrings import timber.log.Timber private const val USER_PIN_ID = "user-pin-id" diff --git a/vector/src/main/java/im/vector/app/features/location/domain/usecase/CompareLocationsUseCase.kt b/vector/src/main/java/im/vector/app/features/location/domain/usecase/CompareLocationsUseCase.kt index 1ac5bd4754f..00c05ca4acf 100644 --- a/vector/src/main/java/im/vector/app/features/location/domain/usecase/CompareLocationsUseCase.kt +++ b/vector/src/main/java/im/vector/app/features/location/domain/usecase/CompareLocationsUseCase.kt @@ -7,9 +7,9 @@ package im.vector.app.features.location.domain.usecase -import org.maplibre.android.geometry.LatLng import im.vector.app.features.location.LocationData import kotlinx.coroutines.withContext +import org.maplibre.android.geometry.LatLng import org.matrix.android.sdk.api.session.Session import javax.inject.Inject diff --git a/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewFragment.kt b/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewFragment.kt index b121c894801..7f5ce8c5480 100644 --- a/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewFragment.kt +++ b/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewFragment.kt @@ -21,18 +21,6 @@ import androidx.lifecycle.lifecycleScope import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState import com.google.android.material.bottomsheet.BottomSheetBehavior -import org.maplibre.android.geometry.LatLng -import org.maplibre.android.geometry.LatLngBounds -import org.maplibre.android.maps.MapView -import org.maplibre.android.maps.MapLibreMap -import org.maplibre.android.maps.MapLibreMapOptions -import org.maplibre.android.maps.Style -import org.maplibre.android.maps.SupportMapFragment -import org.maplibre.android.plugins.annotation.OnSymbolClickListener -import org.maplibre.android.plugins.annotation.Symbol -import org.maplibre.android.plugins.annotation.SymbolManager -import org.maplibre.android.plugins.annotation.SymbolOptions -import org.maplibre.android.style.layers.Property import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R import im.vector.app.core.extensions.addChildFragment @@ -54,6 +42,18 @@ import im.vector.app.features.location.zoomToBounds import im.vector.app.features.location.zoomToLocation import im.vector.lib.strings.CommonStrings import kotlinx.coroutines.launch +import org.maplibre.android.geometry.LatLng +import org.maplibre.android.geometry.LatLngBounds +import org.maplibre.android.maps.MapLibreMap +import org.maplibre.android.maps.MapLibreMapOptions +import org.maplibre.android.maps.MapView +import org.maplibre.android.maps.Style +import org.maplibre.android.maps.SupportMapFragment +import org.maplibre.android.plugins.annotation.OnSymbolClickListener +import org.maplibre.android.plugins.annotation.Symbol +import org.maplibre.android.plugins.annotation.SymbolManager +import org.maplibre.android.plugins.annotation.SymbolOptions +import org.maplibre.android.style.layers.Property import timber.log.Timber import java.lang.ref.WeakReference import javax.inject.Inject diff --git a/vector/src/main/java/im/vector/app/features/location/preview/LocationPreviewFragment.kt b/vector/src/main/java/im/vector/app/features/location/preview/LocationPreviewFragment.kt index 1e451fe8622..84ac2a34cd6 100644 --- a/vector/src/main/java/im/vector/app/features/location/preview/LocationPreviewFragment.kt +++ b/vector/src/main/java/im/vector/app/features/location/preview/LocationPreviewFragment.kt @@ -17,7 +17,6 @@ import androidx.lifecycle.lifecycleScope import com.airbnb.mvrx.args import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState -import org.maplibre.android.maps.MapView import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R import im.vector.app.core.platform.VectorBaseFragment @@ -35,6 +34,7 @@ import im.vector.app.features.location.UrlMapProvider import im.vector.app.features.location.showUserLocationNotAvailableErrorDialog import im.vector.lib.strings.CommonStrings import kotlinx.coroutines.launch +import org.maplibre.android.maps.MapView import java.lang.ref.WeakReference import javax.inject.Inject