【问题标题】:Identifying the GeoPoint that trigger an onTap call识别触发 onTap 调用的 GeoPoint
【发布时间】:2012-11-16 14:57:00
【问题描述】:

我正在开发 Android 上的 Google 地图应用。我通过将它们作为 OverlayItems 添加到 ItemizedOverlay 来显示许多 GeoPoints。这非常适合显示它们并在我单击它们时显示一个漂亮的框,但是我正在尝试将信息放入它显示的框中。

因此,我使用自己的类扩展了 ItemizedOverlay,并且我将覆盖 onTap (final GeoPoint p, final MapView mapView)。起初我以为这会很简单,因为其中一个参数是 GeoPoint,所以我会确切地知道点击了哪个 GeoPoint。但是,据我所知,GeoPoint 参数是用户实际触摸位置的 GeoPoint。鉴于用户可以触摸并仍然触发onTap 的范围,GeoPoint 对于准确了解实际触摸了哪个 GeoPoint 并没有多大帮助。

我目前正在根据我所有现有的 GeoPoints 检查参数 GeoPoint 并查看它最接近哪个。这似乎是一个超级 hacky 的抽象反转。有没有更好的方法来了解实际被窃听的内容?

【问题讨论】:

    标签: java android google-maps google-maps-markers


    【解决方案1】:

    您应该重写该方法,而不是 onTap (final GeoPoint p, final MapView mapView)

    @Override
    protected boolean onTap(int index){
        //you code here
    }
    

    index 会将您指向右侧的OverlayItem

    问候。

    【讨论】:

    • 我同时覆盖了 onTap(int index) 和 onTap (final GeoPoint p, final MapView mapView),并且使用日志,永远不会调用索引。有没有办法让那个被调用?
    • 处理触摸事件的回调应该返回true,如果他们处理了触摸事件并且它不会被进一步调度。如果返回false,则触摸尚未处理,它将被分派到其他回调或视图。因此,在您的情况下,如果您不需要它,只需删除 onTouch 中的一个,或者在第一个被调用时返回 false。
    • 太棒了,非常感谢!只是为了节省其他人的最后一点研究,在索引到 OverlayItems 之后,getPoint 实际上会将 GeoPoint 从 OverlayItem 中拉出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    相关资源
    最近更新 更多