2011-02-06 62 views
6

我有一个MapView带有一些覆盖和MyLocationOverlay的子类,因为我希望用户当前位置显示在其他标记之上。MyLocationOverlay dispatchTap()不会传播

我正在处理标记的onTap事件,以显示带有点击标记信息的面板,如果在标记外(即使在位置标记中)点击,面板也应该隐藏。

如果我点击一个标记或在一个空的地方一切都很好,面板显示或隐藏如预期的,但如果我点击位置标记没有任何反应(如果位置标记是另一个标记信息doesn' t显示,如果它在外面,并且信息显示它不隐藏)。

在我MyLocationOverlay我overrided dispatchTap()功能使它返回false在docs说:

返回:如果此丝锥加工; 如果应将其发送到其他覆盖,则为false。

,但仍然无法正常工作,甚至我试图返回true,以防万一,但没有...

任何人知道如何在onTap事件传播到其他的覆盖?

+0

dispatchTap实际上是否被调用? (它应该默认返回false)。你有没有尝试覆盖公共布尔onTouchEvent(android.view.MotionEvent e,MapView的mapView),看看是否被调用? – Dori 2011-12-22 15:27:07

回答

1

“由于Android 2.0固定的,它是某些手机的一个已知的问题”

从 - Propagate events in several layers android google maps

“如果你看到你把你的MapView覆盖的项目,您中的onTap()会当你点击任何覆盖项目时触发onTap(GeoPoint point,MapView视图)总是触发,而不管用户在哪里点击,因此你可以覆盖它看它是否被触发,onTap(int i)会在它后面运行在重叠项目被点击的情况下“。

From - https://stackoverflow.com/questions/6680387/ontap-event-on-map-is-not-fired