Как правильно определить маркерНажмите в Sygic Map

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

mpView.addMapGestureListener(object : MapGestureAdapter() {
        override fun onMapClicked(e: MotionEvent?, isTwoFingers: Boolean): Boolean {

            val clickedArea=mpView.geoCoordinatesFromPoint(Math.round(e!!.getX()), Math.round(e.getY()))
            for (marker : MapMarker in markerList )
            {

                val dist=clickedArea!!.distanceTo(marker.position)
                if (dist< 2)

                {
                    val positionMarker = markerList.indexOf(marker)
                    val positionLastMarker = markerList.indexOf(mSelectedMarker!!)
                    val markerNumber = positionMarker +1
                    val lastMarkerNumber = positionLastMarker + 1
                    travelStep = travelStepList.get(markerNumber -1)
                    configTeaser(travelStep)
                }
            }

            return false
        }
    })

1 ответ

Решение

Мне удалось это сделать, мне просто нужно было вызвать "requestObjectsAtPoint" внутри слушателя MapGesture и сделать обходной путь, вот код:

       mpView.addMapGestureListener(object : MapGestureAdapter() {
        override fun onMapClicked(e: MotionEvent?, isTwoFingers: Boolean): Boolean {
            mpView.requestObjectsAtPoint(e!!.getX(),e.getY(), RequestObjectCallback { objects, x, y ->

                for (marker : ViewObject in objects )
                {
                    if (marker.objectType==1)
                    {
                        if ((marker as MapObject).mapObjectType==1)
                        {
                            val positionMarker = markerList.indexOf(marker)
                            val positionLastMarker = markerList.indexOf(mSelectedMarker!!)
                            val markerNumber = positionMarker +1
                            val lastMarkerNumber = positionLastMarker + 1
                            mSelectedMarker = marker as MapMarker
                            travelStep = travelStepList.get(markerNumber -1)
                            configTeaser(travelStep)
                        }
                    }


                }

            })

            return true
        }
    })
Другие вопросы по тегам