首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确检测Sygic Map中的markerClick

如何正确检测Sygic Map中的markerClick
EN

Stack Overflow用户
提问于 2019-01-08 17:37:35
回答 1查看 130关注 0票数 0

我使用MapGestureListener来比较每次点击区域的坐标和标记的坐标,如果它们在相同的坐标上,那么我可以继续,但它不会工作,因为相对高度的变化不能确保获得点击位置的准确性。

代码语言:javascript
复制
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
        }
    })
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-09 20:31:17

我已经设法做到了,我只需要调用MapGesture侦听器中的"requestObjectsAtPoint“并做一些变通方法,下面是代码:

代码语言:javascript
复制
       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
        }
    })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54088931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档