问题:
我有两个侦听器,分别是OnSingleTapListenerOnGraphicClick
目标:
看看我所附的屏幕截图;我希望当用户点击“在此处轻按”图标时同时调用这两个侦听器。当前,当用户点击“在此处点击”图标时-OnGraphicClick似乎拦截了用户事件,并且未调用OnSingleTapListener

我试图想到一种在onSingleTap中手动调用OnSingleTapListener方法的方法,但是它需要float参数(用户单击的屏幕位置),并且OnGraphicClick需要一个ArcGIS graphic对象:两种方法的参数无关。

要考虑的问题


有没有一种方法可以通过模仿以下操作来模仿用户事件
performClick方法,将执行一次点击
在用户点击“点击此处”图标的位置?
我是否可以将不可见视图放置在地图视图之上,并将OnSingleTapListener放置在该不可见视图上?如果这样做的话,用户的点击事件是否会滴答滴答地传递通过不可见视图,以便与放置在地图视图上的onGraphicClick侦听器进行交互?


有用的信息:
我正在使用Android的ArcGIS API。

我有两个听众。在OnSingleTapListener对象(包含所有地图内容的主视图)上设置的一个MapView,也在onGraphicClickListener对象上设置的一个与ArcGIS相关的MapView

MySingleTapListener mySingleTapListener = new MySingleTapListener(mMapView.getContext(), mMapView);
mMapView.setOnSingleTapListener(mySingleTapListener);
mMapViewHelper = new EnhancedMapViewHelper(mMapView, handler, this); //<--onGraphicClickListener is set here


样本画面显示

android - Android:两个事件监听器-如何同时调用-LMLPHP

最佳答案

我无法让两个听众一起工作。但是,我确实找到了解决方案。

MapView类包含一个toMapPoint方法,该方法将屏幕坐标转换为地图坐标。使用此方法的方法如下:


只需在要使用的OnSingleTapListener上设置一个MapView
onSingleTapOnSingleTapListener方法通过toMapPoint方法将每个用户事件转换为地图坐标。
如果地图坐标与“点击此处”图标的地图坐标相等,则执行某些操作,即在这些屏幕坐标处显示弹出窗口。

关于android - Android:两个事件监听器-如何同时调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37439604/

10-11 12:45