Как удалить OnCameraMoveListener в mapbox - PullRequest
0 голосов
/ 12 октября 2019

Я использую Mapbox для своего приложения для Android с kotlin. Я добавил OnCameraMoveListener, чтобы активировать некоторые действия, когда пользователи перемещают камеру, и она работает отлично.

На определенном этапе мне нужно остановить этот OnCameraMoveListener для работы.

Вот мой код:

            mapboxMap.addOnCameraMoveStartedListener(object :
                MapboxMap.OnCameraMoveStartedListener {
                private val REASONS = arrayOf(
                    "REASON_API_GESTURE",
                    "REASON_DEVELOPER_ANIMATION",
                    "REASON_API_ANIMATION"
                )

                override fun onCameraMoveStarted(reason: Int) {
                }
            })

            mapboxMap.addOnCameraMoveListener {
            }
            mapboxMap.addOnCameraMoveCancelListener {
            }
            mapboxMap.addOnCameraIdleListener {
                val lat = mapboxMap.cameraPosition.target.latitude
                val long = mapboxMap.cameraPosition.target.longitude
                val accessToken = getString(R.string.access_token)
                val url =
                    "https://api.mapbox.com/v4/geocode/mapbox.places/$long,$lat.json?access_token=$accessToken"
                val request = Request.Builder().url(url).build()
                val client = OkHttpClient()
                client.newCall(request).enqueue(object : Callback {
                    override fun onFailure(call: Call, e: IOException) {
                        println("failed to execute the url")
                    }

                    override fun onResponse(call: Call, response: okhttp3.Response) {
                        val body = response.body?.string()
                        val gson = GsonBuilder().create()
                        val resp = gson.fromJson(body, Response::class.java)
                        if (REQUEST_CODE_AUTOCOMPLETE == 1) {
                            fromName = resp.features[0].place_name
                            runOnUiThread {
                                FromEditText.setText(fromName)
                            }
                            fromLat = resp.features[0].geometry.coordinates[1]
                            fromLong = resp.features[0].geometry.coordinates[0]
                            checkOnValues(
                                Point.fromLngLat(fromLong, fromLat),
                                Point.fromLngLat(0.0, 0.0)
                            )
                        } else {
                            toName = resp.features[0].place_name
                            runOnUiThread {
                                ToEditText.setText(toName)
                                toLat = resp.features[0].geometry.coordinates[1]
                                toLong = resp.features[0].geometry.coordinates[0]
                                checkOnValues(
                                    Point.fromLngLat(fromLong, fromLat),
                                    Point.fromLngLat(toLong, toLat)
                                )
                            }

                        }
                    }
                })
                if (REQUEST_CODE_AUTOCOMPLETE == 1) {
                    mapboxMap.clear()
                    mapboxMap.addMarker(
                        MarkerOptions()
                            .position(
                                LatLng(
                                    (lat),
                                    (long)
                                )
                            )
                            .title("From")
                    )
                } else {
                    mapboxMap.clear()
                    mapboxMap.addMarker(
                        MarkerOptions()
                            .position(
                                LatLng(
                                    (lat),
                                    (long)
                                )
                            )
                            .title("To")
                    )
                }

А вот как я пытался его остановить:

mapboxMap!!.removeOnCameraMoveListener {  }

Проблема в том, что после выполнения кода удаления строки. он все еще работает, поскольку ничего не произошло.

Примечание :

Мой mapboxMap.addOnCameraMoveStartedListener находится внутри функции onMapReady, я думаю, что это поможет каким-то образом найти ответ,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...