首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OverlayItem onTap的Mapview onTap未触发

OverlayItem onTap的Mapview onTap未触发
EN

Stack Overflow用户
提问于 2011-05-23 21:22:14
回答 3查看 1.5K关注 0票数 0

我的应用程序中有一个地图视图,所有的东西在touchEvents上都运行得很好。

然而,为了最大限度地提高应用程序的使用率,我一直在尝试添加trackBall界面功能,但遇到了一个问题。

当轨迹球处于焦点时,它会正确地滚动mapView,但是当用户将焦点放在覆盖项上时,我无法触发onTap事件。

当我点击鼠标按钮(我正在使用模拟器)来模拟轨迹球用户(F6已加入轨迹球)的点击时,没有任何反应。在这种情况下,onTrackBallEvent代码永远不会触发,这是我所期望的,因为API文档说在这种情况下应该触发onTap,但它也不会触发。

如果我不是以overlayItem为中心,我会在onTrackBallEvent中获得ACTION_DOWN和ACTION_UP事件,只有当地图以OverlayItem为中心时,onTrackBallEvent才不会被触发。不幸的是,onTap事件也不会被触发。很明显,当覆盖在屏幕中央,用户点击轨迹球时,操作系统会用这些点击来做一些事情,但如果我能弄清楚它是什么,我会很高兴的。

有人知道我应该找什么活动吗?

EN

回答 3

Stack Overflow用户

发布于 2012-09-19 06:02:42

这是一个相当古老的问题,但我想我会给出我的2美分。出于某些原因,您需要在地图上的某个位置添加一个覆盖,然后onTap()覆盖才能在您单击的位置添加其他覆盖。我使用:

代码语言:javascript
复制
public boolean onTap(GeoPoint p, MapView mapView) {
    boolean tappedAnOverlay = super.onTap(p, mapView);
    if (tappedAnOverlay) {
        // do your thing if hit an overlay
    }
    else {
        // no overlay found in that location
    }

    MapController mc = mapView.getController();
    mc.animateTo(p);

    return true;

} 
票数 1
EN

Stack Overflow用户

发布于 2011-05-23 21:43:04

因为它可以和这个一起工作。我检查屏幕上的点击点是否与某个覆盖项匹配。

代码语言:javascript
复制
        public boolean onTouchEvent(MotionEvent event, MapView mv) {
        final int action=event.getAction();
        final int x=(int)event.getX();
        final int y=(int)event.getY();

        if(!this.marker.equals(getResources().getDrawable(R.drawable.parada))){
            if (action == MotionEvent.ACTION_DOWN) {
                        for (OverlayItem item : mItems) {
                        Point p = new Point(0,0);                       
                        mv.getProjection().toPixels(item.getPoint(), p);                        
                        if (hitTest(item, marker, x-p.x, y-p.y) && item.getSnippet()!= "parada") {
票数 0
EN

Stack Overflow用户

发布于 2011-05-24 14:29:55

请试一下这个。这是用来在地图视图上显示多个叠加的,可能会解决这个问题:https://github.com/donnfelker/android-mapviewballoons

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6097781

复制
相关文章

相似问题

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