1

I have implements a mapbox MapView. It appears on screen just fine, but when I try to pan the map around, it kinds moves a few pixels on the screen in the direction I intended and then it stop while my finger is still sliding. Sometimes that would happen and sometimes it wouldn't respond at all. When it stops, it doesn't mean it is stuck now - I can try again and it might move again but the same way. It's very unpredictable, not consistent and clunky.

**I have to mention, that double click for zooming always works. So it's something with the swipe gesture that doesn't sit well.

I have the map hosted in a fragment and I show in in a frame inside another fragment. Could it have anything to do to the fact that it's two layers of fragment managers (fragment within fragment).

This is my map's fragment xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:mapbox="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".fragments.ImageMapViewFragment"
        tools:showIn="@layout/fragment_image_expanded">


    <com.mapbox.mapboxsdk.maps.MapView
            android:id="@+id/mapView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            mapbox:mapbox_cameraZoom="11"/>



</androidx.constraintlayout.widget.ConstraintLayout>

This is my fragment:

    mapView = view.findViewById(co.getdere.R.id.mapView)



    mapView?.getMapAsync { mapboxMap ->
        mapboxMap.setStyle(Style.LIGHT) { style ->

            style.addImage(
                DERE_PIN,
                BitmapUtils.getBitmapFromDrawable(resources.getDrawable(R.drawable.pin_icon))!!,
                true
            )

            val geoJsonOptions = GeoJsonOptions().withTolerance(0.4f)
            val symbolManager = SymbolManager(mapView!!, mapboxMap, style, null, geoJsonOptions)
            symbolManager.iconAllowOverlap = true

            sharedViewModelForImage.sharedImageObject.observe(this, Observer {
                it?.let { image ->




                    val symbolOptions = SymbolOptions()
                        .withLatLng(LatLng(image.location[0], image.location[1]))
                        .withIconImage(DERE_PIN)
                        .withIconSize(1.3f)
                        .withZIndex(10)
                        .withDraggable(true)

                    symbolManager.create(symbolOptions)

                    val position = CameraPosition.Builder()
                        .target(LatLng(image.location[0], image.location[1]))
                        .zoom(10.0)
                        .build()

                    mapboxMap.animateCamera(CameraUpdateFactory.newCameraPosition(position))


                }
            })


        }
    }

These are my dependencies (the last I've added trying to solve my problem but it remains, that dependency didn't change anything really)

implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:7.4.0-alpha.1'
implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v7:0.6.0'
implementation 'com.mapbox.mapboxsdk:mapbox-android-gestures:0.4.0'
Tsabary
  • 3,119
  • 2
  • 24
  • 66
  • Can you clarify which version of the Maps SDK you are building with? Older versions of the SDK have different gesture logic, so this could be one reason you are seeing this behavior. – riastrad Apr 10 '19 at 21:09
  • I am using v7.3.0 – Tsabary Apr 10 '19 at 21:50

1 Answers1

1

My problem was that even though my fragment was external, it was hosted inside a scroll layout so the gestures were lost between the two view probably

Tsabary
  • 3,119
  • 2
  • 24
  • 66