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

Commit 1ff3448d authored by Fynn Godau's avatar Fynn Godau
Browse files

Merge branch 'epic67-maps' into 913-circles

parents 98dfdb03 dd4e7961
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@ import com.google.android.gms.maps.internal.IOnMapLongClickListener;
import com.google.android.gms.maps.internal.IOnMarkerClickListener;
import com.google.android.gms.maps.internal.IOnMarkerDragListener;
import com.google.android.gms.maps.internal.IOnInfoWindowClickListener;
import com.google.android.gms.maps.internal.IOnInfoWindowCloseListener;
import com.google.android.gms.maps.internal.IOnInfoWindowLongClickListener;
import com.google.android.gms.maps.internal.IInfoWindowAdapter;
import com.google.android.gms.maps.internal.IOnMapLoadedCallback;
import com.google.android.gms.maps.internal.IOnMyLocationChangeListener;
@@ -121,9 +123,9 @@ interface IGoogleMapDelegate {
    void onExitAmbient() = 81;

    //void setOnGroundOverlayClickListener(IOnGroundOverlayClickListener listener) = 82;
    //void setInfoWindowLongClickListener(IOnInfoWindowLongClickListener listener) = 83;
    void setInfoWindowLongClickListener(IOnInfoWindowLongClickListener listener) = 83;
    //void setPolygonClickListener(IOnPolygonClickListener listener) = 84;
    //void setInfoWindowCloseListener(IOnInfoWindowCloseListener listener) = 85;
    void setInfoWindowCloseListener(IOnInfoWindowCloseListener listener) = 85;
    //void setPolylineClickListener(IOnPolylineClickListener listener) = 86;
    void setCircleClickListener(IOnCircleClickListener listener) = 88;

+7 −0
Original line number Diff line number Diff line
package com.google.android.gms.maps.internal;

import com.google.android.gms.maps.model.internal.IMarkerDelegate;

interface IOnInfoWindowCloseListener {
    void onInfoWindowClose(IMarkerDelegate marker);
}
+7 −0
Original line number Diff line number Diff line
package com.google.android.gms.maps.internal;

import com.google.android.gms.maps.model.internal.IMarkerDelegate;

interface IOnInfoWindowLongClickListener {
    void onInfoWindowLongClick(IMarkerDelegate marker);
}
+51 −7
Original line number Diff line number Diff line
@@ -54,6 +54,9 @@ import com.mapbox.mapboxsdk.plugins.annotation.Annotation
import com.mapbox.mapboxsdk.style.layers.Property.LINE_CAP_ROUND
import com.google.android.gms.dynamic.unwrap
import com.mapbox.mapboxsdk.WellKnownTileServer
import org.microg.gms.maps.mapbox.model.DefaultInfoWindowAdapter
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 org.microg.gms.maps.MapsConstants.*
@@ -102,6 +105,13 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions)
    private var markerDragListener: IOnMarkerDragListener? = null
    private var circleClickListener: IOnCircleClickListener? = null

    private var infoWindowAdapter: IInfoWindowAdapter = DefaultInfoWindowAdapter(MapContext(context))
    internal var onInfoWindowClickListener: IOnInfoWindowClickListener? = null
    internal var onInfoWindowLongClickListener: IOnInfoWindowLongClickListener? = null
    internal var onInfoWindowCloseListener: IOnInfoWindowCloseListener? = null

    var currentInfoWindow: InfoWindow? = null

    var lineManager: LineManager? = null
    val pendingLines = mutableSetOf<Markup<Line, LineOptions>>()
    var lineId = 0L
@@ -488,13 +498,19 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions)
    }

    override fun setOnInfoWindowClickListener(listener: IOnInfoWindowClickListener?) {
        Log.d(TAG, "unimplemented Method: setOnInfoWindowClickListener")
        onInfoWindowClickListener = listener
    }

    override fun setInfoWindowLongClickListener(listener: IOnInfoWindowLongClickListener) {
        onInfoWindowLongClickListener = listener
    }

    override fun setInfoWindowAdapter(adapter: IInfoWindowAdapter?) {
        Log.d(TAG, "unimplemented Method: setInfoWindowAdapter")
    override fun setInfoWindowCloseListener(listener: IOnInfoWindowCloseListener) {
        onInfoWindowCloseListener = listener
    }

    override fun setInfoWindowAdapter(adapter: IInfoWindowAdapter?) {
        infoWindowAdapter = adapter ?: DefaultInfoWindowAdapter(MapContext(context))
    }

    override fun getTestingHelper(): IObjectWrapper? {
@@ -616,6 +632,7 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions)
        map.addOnCameraMoveListener {
            try {
                cameraMoveListener?.onCameraMove()
                currentInfoWindow?.update()
            } catch (e: Exception) {
                Log.w(TAG, e)
            }
@@ -636,7 +653,11 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions)
        }
        map.addOnMapClickListener { latlng ->
            try {
                mapClickListener?.let { if (!hasSymbolAt(latlng)) it.onMapClick(latlng.toGms()); }
                if (!hasSymbolAt(latlng)) {
                    mapClickListener?.onMapClick(latlng.toGms())
                    currentInfoWindow?.close()
                    currentInfoWindow = null
                }
            } catch (e: Exception) {
                Log.w(TAG, e)
            }
@@ -690,12 +711,17 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions)
                }
                symbolManager.iconAllowOverlap = true
                symbolManager.addClickListener {
                    val marker = markers[it.id]
                    try {
                        markers[it.id]?.let { markerClickListener?.onMarkerClick(it) } == true
                        if (markers[it.id]?.let { markerClickListener?.onMarkerClick(it) } == true) {
                            return@addClickListener true
                        }
                    } catch (e: Exception) {
                        Log.w(TAG, e)
                        false
                        return@addClickListener false
                    }

                    marker?.let { showInfoWindow(it) } == true
                }
                symbolManager.addDragListener(object : OnSymbolDragListener {
                    override fun onAnnotationDragStarted(annotation: Symbol?) {
@@ -708,7 +734,12 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions)

                    override fun onAnnotationDrag(annotation: Symbol?) {
                        try {
                            markers[annotation?.id]?.let { markerDragListener?.onMarkerDrag(it) }
                            annotation?.let { symbol ->
                                markers[symbol.id]?.let { marker ->
                                    marker.setPositionWhileDragging(symbol.latLng.toGms())
                                    markerDragListener?.onMarkerDrag(marker)
                                }
                            }
                        } catch (e: Exception) {
                            Log.w(TAG, e)
                        }
@@ -773,6 +804,17 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions)
        }
    }

    internal fun showInfoWindow(marker: MarkerImpl): Boolean {
        infoWindowAdapter.getInfoWindowViewFor(marker, MapContext(context))?.let { infoView ->
            currentInfoWindow?.close()
            currentInfoWindow = InfoWindow(infoView, this, marker).also { infoWindow ->
                mapView?.let { infoWindow.open(it) }
            }
            return true
        }
        return false
    }

    override fun useViewLifecycleWhenInFragment(): Boolean {
        Log.d(TAG, "unimplemented Method: useViewLifecycleWhenInFragment")
        return false
@@ -793,6 +835,8 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions)
        symbolManager?.onDestroy()
        symbolManager = null

        currentInfoWindow?.close()

        pendingMarkers.clear()
        markers.clear()

+1 −1
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@ import com.mapbox.mapboxsdk.plugins.annotation.SymbolOptions
import com.mapbox.mapboxsdk.style.layers.Property.ICON_ANCHOR_TOP_LEFT
import com.mapbox.mapboxsdk.utils.ColorUtils

open class BitmapDescriptorImpl(private val id: String, private val size: FloatArray) {
open class BitmapDescriptorImpl(private val id: String, internal val size: FloatArray) {
    open fun applyTo(options: SymbolOptions, anchor: FloatArray, dpiFactor: Float): SymbolOptions {
        return options.withIconImage(id).withIconAnchor(ICON_ANCHOR_TOP_LEFT).withIconOffset(arrayOf(-anchor[0] * size[0] / dpiFactor, -anchor[1] * size[1] / dpiFactor))
    }
Loading