Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit acd6f6c4 authored by Fynn Godau's avatar Fynn Godau
Browse files

Merge branch '907-location-regression' into 'master'

Fix location update subscription

See merge request !71
parents ba86de1f eeef0219
Loading
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
@@ -8,6 +8,8 @@ import android.util.Log
import com.google.android.gms.dynamic.IObjectWrapper
import com.google.android.gms.dynamic.ObjectWrapper
import com.google.android.gms.maps.internal.*
import com.mapbox.mapboxsdk.location.engine.LocationEngineCallback
import com.mapbox.mapboxsdk.location.engine.LocationEngineResult
import org.microg.gms.maps.MapsConstants
import org.microg.gms.maps.mapbox.model.AbstractMarker
import org.microg.gms.maps.mapbox.model.DefaultInfoWindowAdapter
@@ -32,9 +34,27 @@ abstract class AbstractGoogleMap(context: Context) : IGoogleMapDelegate.Stub() {
    internal var markerClickListener: IOnMarkerClickListener? = null
    internal var circleClickListener: IOnCircleClickListener? = null

    internal var myLocationChangeListener: IOnMyLocationChangeListener? = null

    internal val locationEngineCallback = object : LocationEngineCallback<LocationEngineResult> {
        override fun onSuccess(result: LocationEngineResult?) {
            result?.lastLocation?.let { location ->
                Log.d(TAG, "myLocationChanged: $location")
                myLocationChangeListener?.onMyLocationChanged(ObjectWrapper.wrap(location))

                onLocationUpdate(location)
            }
        }
        override fun onFailure(e: Exception) {
            Log.e(TAG, "Failed to obtain location update", e)
        }
    }


    internal abstract fun showInfoWindow(marker: AbstractMarker): Boolean

    internal abstract fun onLocationUpdate(location: Location)

    override fun setOnInfoWindowClickListener(listener: IOnInfoWindowClickListener?) {
        onInfoWindowClickListener = listener
    }
@@ -77,7 +97,7 @@ abstract class AbstractGoogleMap(context: Context) : IGoogleMapDelegate.Stub() {
    }

    override fun setOnMyLocationChangeListener(listener: IOnMyLocationChangeListener?) {
        Log.d(TAG, "unimplemented Method: setOnMyLocationChangeListener")
        myLocationChangeListener = listener
    }

    override fun setOnMyLocationButtonClickListener(listener: IOnMyLocationButtonClickListener?) {
+4 −15
Original line number Diff line number Diff line
@@ -57,8 +57,6 @@ import org.microg.gms.maps.mapbox.model.InfoWindow
import org.microg.gms.maps.mapbox.model.getInfoWindowViewFor
import com.mapbox.mapboxsdk.camera.CameraUpdateFactory
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback
import com.mapbox.mapboxsdk.location.engine.LocationEngineCallback
import com.mapbox.mapboxsdk.location.engine.LocationEngineResult
import org.microg.gms.maps.MapsConstants.*
import org.microg.gms.maps.mapbox.model.*
import org.microg.gms.maps.mapbox.utils.MultiArchLoader
@@ -97,19 +95,6 @@ class GoogleMapImpl(context: Context, var options: GoogleMapOptions) : AbstractG
    private var cameraMoveStartedListener: IOnCameraMoveStartedListener? = null
    private var cameraIdleListener: IOnCameraIdleListener? = null
    private var markerDragListener: IOnMarkerDragListener? = null
    private var myLocationChangeListener: IOnMyLocationChangeListener? = null

    private val locationEngineCallback = object : LocationEngineCallback<LocationEngineResult> {
        override fun onSuccess(result: LocationEngineResult?) {
            result?.lastLocation?.let { location ->
                Log.d(TAG, "myLocationChanged: $location")
                myLocationChangeListener?.onMyLocationChanged(ObjectWrapper.wrap(location))
            }
        }
        override fun onFailure(e: Exception) {
            Log.w(TAG, e)
        }
    }

    var lineManager: LineManager? = null
    val pendingLines = mutableSetOf<Markup<Line, LineOptions>>()
@@ -436,6 +421,10 @@ class GoogleMapImpl(context: Context, var options: GoogleMapOptions) : AbstractG
        }
    }

    override fun onLocationUpdate(location: Location) {
        // no action necessary, as the location component will automatically place a marker on the map
    }

    override fun setContentDescription(desc: String?) {
        mapView?.contentDescription = desc
    }
+7 −15
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import com.google.android.gms.maps.model.internal.*
import com.mapbox.mapboxsdk.Mapbox
import com.mapbox.mapboxsdk.WellKnownTileServer
import com.mapbox.mapboxsdk.location.engine.*
import com.mapbox.mapboxsdk.maps.Style
import com.mapbox.mapboxsdk.plugins.annotation.SymbolOptions
import com.mapbox.mapboxsdk.snapshotter.MapSnapshot
import com.mapbox.mapboxsdk.snapshotter.MapSnapshotter
@@ -37,7 +36,6 @@ import com.mapbox.mapboxsdk.style.layers.*
import com.mapbox.mapboxsdk.style.sources.GeoJsonSource
import com.mapbox.turf.TurfConstants.UNIT_METERS
import com.mapbox.turf.TurfMeasurement
import org.microg.gms.maps.MapsConstants
import org.microg.gms.maps.mapbox.model.*
import org.microg.gms.maps.mapbox.utils.toGms
import org.microg.gms.maps.mapbox.utils.toMapbox
@@ -92,17 +90,6 @@ class LiteGoogleMapImpl(context: Context, var options: GoogleMapOptions) : Abstr
    private var myLocationEnabled = false
    private var myLocation: Location? = null
    private var locationEngineProvider: LocationEngine = LocationEngineDefault.getDefaultLocationEngine(mapContext)
    private val locationListener = object : LocationEngineCallback<LocationEngineResult> {
        override fun onSuccess(result: LocationEngineResult?) {
            this@LiteGoogleMapImpl.myLocation = result?.lastLocation
            postUpdateSnapshot()
        }

        override fun onFailure(exception: Exception) {
            // same behavior as MapLibre's LocationComponent
            Log.e(TAG, "Failed to obtain location update", exception)
        }
    }

    internal val markers: MutableList<LiteMarkerImpl> = mutableListOf()
    internal val polygons: MutableList<LitePolygonImpl> = mutableListOf()
@@ -502,7 +489,7 @@ class LiteGoogleMapImpl(context: Context, var options: GoogleMapOptions) : Abstr
                LocationEngineRequest.Builder(DEFAULT_INTERVAL_MILLIS)
                    .setFastestInterval(DEFAULT_FASTEST_INTERVAL_MILLIS)
                    .setPriority(LocationEngineRequest.PRIORITY_HIGH_ACCURACY)
                    .build(), locationListener, Looper.getMainLooper()
                    .build(), locationEngineCallback, Looper.getMainLooper()
            )

        } else {
@@ -511,7 +498,12 @@ class LiteGoogleMapImpl(context: Context, var options: GoogleMapOptions) : Abstr
    }

    private fun deactivateLocationProvider() {
        locationEngineProvider.removeLocationUpdates(locationListener)
        locationEngineProvider.removeLocationUpdates(locationEngineCallback)
    }

    override fun onLocationUpdate(location: Location) {
        this@LiteGoogleMapImpl.myLocation = location
        postUpdateSnapshot()
    }

    override fun getUiSettings(): IUiSettingsDelegate {