Как выбрать и отменить выбор маркера в Google Maps?

1

У меня есть список мест, которые отмечены на картах Google с помощью маркеров. Я хочу выбрать маркер, чтобы он выделялся другим цветом. Когда я нажимаю на тот же маркер или любой другой маркер, я хочу удалить выделение, сделанное в первом маркере, и вернуть ему цвет по умолчанию.

Это мой метод onClusterItemClick

override fun onClusterItemClick(p0: Station?): Boolean {
        dragView.visibility = View.VISIBLE
        viewModel.loadStation(p0?.id!!)
        val marker = renderer.getMarker(p0)

        //save previous merker here

 marker?.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.ic_map_pin_selected))

        return true
    }

Это мой Station Renderer

/**
     * Class to design the pin point into the map
     */

    inner class StationRenderer(context: Context, map: GoogleMap,
                                clusterManager: ClusterManager<Station>) : DefaultClusterRenderer<Station>(context, map, clusterManager) {


        override fun onBeforeClusterRendered(cluster: Cluster<Station>?, markerOptions: MarkerOptions?) {
            markerOptions?.icon(BitmapDescriptorFactory.fromBitmap(createStoreMarker(cluster?.size.toString())))
        }

        override fun onBeforeClusterItemRendered(item: Station?, markerOptions: MarkerOptions?) {
            markerOptions?.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_map_pin))
        }


        private fun createStoreMarker(stationsCount:String): Bitmap {
            val markerLayout = layoutInflater.inflate(R.layout.marker_item, null)
            val markerImage = markerLayout.findViewById(R.id.marker_image) as ImageView
            val markerRating = markerLayout.findViewById(R.id.marker_text) as TextView
            markerImage.setImageResource(R.drawable.ic_map_pin)
            markerRating.text = stationsCount
            markerLayout.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED))
            markerLayout.layout(0, 0, markerLayout.getMeasuredWidth(), markerLayout.getMeasuredHeight())
            val bitmap = Bitmap.createBitmap(markerLayout.getMeasuredWidth(), markerLayout.getMeasuredHeight(), Bitmap.Config.ARGB_8888)
            val canvas = Canvas(bitmap)
            markerLayout.draw(canvas)
            return bitmap
        }


        override fun shouldRenderAsCluster(cluster: Cluster<Station>?): Boolean {
            return cluster?.size !!> 1
        }


    }
Теги:
google-maps
google-maps-markers

1 ответ

0

В googleMaps это не такие вещи, как выбранный или не выбранный, или какой-то тип слушателей специально для этого, but вас есть onMarkerClick(); Вы можете использовать этот слушатель и добавить логику для достижения этой цели.

googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener(){

@Override
public boolean onMarkerClick(Marker marker){
     return false;
   }
}); 

Вы можете получить идею от этого: Как выбрать и отменить выбор маркера в Google Maps в Android?

  • 0
    Я использую clusterItemClick, у вас есть что-нибудь для этого?
  • 0
    Даже в этом случае вам придется добавить свою логику специально в onClusterItemClick чтобы сохранить предыдущий маркер, а затем при выборе какого-либо другого маркера сбросить первый
Показать ещё 13 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню