Карта Mapbox только частично реагирует на жесты панорамирования - PullRequest
1 голос
/ 10 апреля 2019

У меня реализуется mapbox MapView. Он выглядит на экране очень хорошо, но когда я пытаюсь перемещать карту, он перемещает несколько пикселей на экране в нужном направлении, а затем останавливается, пока мой палец все еще скользит. Иногда это случалось, а иногда не отвечало вообще. Когда он останавливается, это не значит, что он застрял сейчас - я могу попробовать еще раз, и он может двигаться снова, но так же. Это очень непредсказуемо, непоследовательно и неуклюже.

** Я должен отметить, что двойной щелчок для масштабирования всегда работает. Так что это с жестом смахивания не очень хорошо.

У меня есть карта, размещенная во фрагменте, и я показываю ее в рамке внутри другого фрагмента. Может ли это иметь какое-либо отношение к тому факту, что это два слоя менеджеров фрагментов (фрагмент внутри фрагмента).

Это фрагмент моей карты 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>

Это мой фрагмент:

    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))


                }
            })


        }
    }

Это мои зависимости (последнее, что я добавил, пытался решить мою проблему, но остается, эта зависимость ничего не изменила)

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'

1 Ответ

0 голосов
/ 11 апреля 2019

Моя проблема заключалась в том, что, хотя мой фрагмент был внешним, он размещался внутри макета прокрутки, поэтому жесты между двумя представлениями терялись, вероятно

...