Гугл карты sdk андроид маркеры клик слушатель не работает - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь разместить маркеры с пользовательским значком и цветами.В данный момент работаю в котлине на андроид.Я пытаюсь установить маркеры на прослушивателе кликов, как указано в документации Google.Но по клику ничего не происходит.

переопределил функцию onMarkerClick и попытался получить тег этого маркера, поскольку я сохранил его, и до этого я попробовал использовать метод .equal для проверки того, что маркер равен этому маркеру события

override fun onMarkerClick(marker: Marker): Boolean {

        // Retrieve the data from the marker.
        var clickCount = marker.tag as Int?

        // Check if a click count was set, then display the click count.
        if (clickCount != null) {
            clickCount = clickCount!! + 1
            marker.tag = clickCount
            Toast.makeText(
                this,
                marker.title +
                        " has been clicked " + clickCount + " times.",
                Toast.LENGTH_SHORT
            ).show()
        }

        // Return false to indicate that we have not consumed the event and that we wish
        // for the default behavior to occur (which is for the camera to move such that the
        // marker is centered and for the marker's info window to open, if it has one).
        return false
    }


    mMap = googleMap
            val streetRight = mMap.addMarker(
                MarkerOptions().position(
                    LatLng(
                        -xx.xxxxx,
                        xxx.xxxxxx
                    )
                ).icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_street_view_person))
            )
            val streeTop = mMap.addMarker(
                MarkerOptions().position(
                    LatLng(
                        -xx.xxxxx,
                        xxx.xxxxxx
                    )
                ).icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_street_view_person))
            )
    streeTop.tag = 1
            streetRight.tag = 2

Я ожидаю, что когда я нажимаю на маркер, он должен показывать тост, на который нажимают маркер.Но ничего не происходит, только карта центрирует этот маркер.

1 Ответ

0 голосов
/ 17 мая 2019

Мне удалось заставить ваш код работать, но я добавил слушателя в onMapReady:

   override fun onMapReady(gMap: GoogleMap?) {
        gMap?.let {
             it.setOnMarkerClickListener {
                var clickCount = it.tag as Int?

                // Check if a click count was set, then display the click count.
                if (clickCount != null) {
                    clickCount = clickCount!! + 1
                    it.tag = clickCount
                    Toast.makeText(
                        this@MapFragment.context,
                        it.title +
                                " has been clicked " + clickCount + " times.",
                        Toast.LENGTH_SHORT
                    ).show()
                }

                // Return false to indicate that we have not consumed the event and that we wish
                // for the default behavior to occur (which is for the camera to move such that the
                // marker is centered and for the marker's info window to open, if it has one).
                false
            }
        }
    }

Это вызывается после вызова .getMapAsync ()

...