MyLocationOverlay dispatchTap() 不传播

Posted

技术标签:

【中文标题】MyLocationOverlay dispatchTap() 不传播【英文标题】:MyLocationOverlay dispatchTap() doesn't propagate 【发布时间】:2011-06-22 06:04:52 【问题描述】:

我有一个MapView,上面有一些叠加层和MyLocationOverlay 的子类,因为我希望用户当前位置显示在其他标记之上。

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

如果我点击标记或空白处一切正常,面板会按预期显示或隐藏,但如果我点击位置标记,则没有任何反应(如果位置标记位于另一个标记上方,则信息不会显示,如果它在外面并且信息显示它不会隐藏)。

在我的MyLocationOverlay 中,我覆盖了dispatchTap() 函数,使其返回false,如docs 所述:

返回:如果此点击已处理,则返回 True; 如果应该发送到其他叠加层则为 false

但仍然不起作用,即使我尝试返回 true 以防万一,但什么都没有......

有人知道如何将onTap 事件传播到其他叠加层吗?

【问题讨论】:

dispatchTap 真的被调用了吗? (默认情况下它应该返回 false)。您是否尝试过覆盖 public boolean onTouchEvent(android.view.MotionEvent e, MapView mapView) 以查看是否被调用? 【参考方案1】:

“自 android 2.0 以来已修复,这是某些手机的已知问题”

来自 - Propagate events in several layers android google maps

“如果你看到你放在 MapView 上的覆盖项目,当你点击任何覆盖项目时,你的 onTap() 将被触发。无论用户在哪里,都会触发 onTap(GeoPoint point, MapView view)点击。因此,您可以覆盖它以查看它是否被触发。在单击覆盖项的情况下,onTap(int i) 将在它之后运行。"

发件人 - https://***.com/questions/6680387/ontap-event-on-map-is-not-fired

【讨论】:

以上是关于MyLocationOverlay dispatchTap() 不传播的主要内容,如果未能解决你的问题,请参考以下文章

MyLocationOverlay dispatchTap() 不传播

如何为 MyLocationOverlay 中的“你在这里”点使用自定义位图?

MapView MyLocationOverlay 首次运行问题

Android 百度地图开发

读书笔记——基于位置的服务(LBS)

SpringMVC总结