首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PathOverlay触摸事件通过每个PathOverlay传递

PathOverlay触摸事件通过每个PathOverlay传递
EN

Stack Overflow用户
提问于 2014-01-23 09:06:02
回答 2查看 269关注 0票数 1

我制作在线地图,并试图添加可触摸的路径/轨道(我改变他们的颜色,当用户触摸他们)。在一张地图上,我有6-7 PathOverlays,并添加了onDown事件处理:

代码语言:javascript
复制
private class PathOverlayExtended extends PathOverlay 
{
    public PathOverlayExtended(int color, Context ctx, long trackId, HistoryDetailFragment currentFragment) {
        super(color, ctx);
        trackIndex = trackId;
        fragment = currentFragment;
    }
    private long trackIndex;
    private HistoryDetailFragment fragment;

    @Override
    public boolean onDown(final MotionEvent event, final MapView mapView) {
    fragment.onRoadClicked(trackIndex);
        return super.onDown(event,mapView);
    }

}

然后我触摸屏幕上的一条路径,它捕捉事件并贯穿每条路径。重要:它总是从相同的路径开始(在末尾添加到Olerlay中的路径)。

当我将“返回super.onDown(事件,mapView)”替换为“返回真”时,只有最后一条路径捕获事件,而这不是我所触摸的路径(而是在末尾添加到覆盖中的路径)。

如何检查/区分我所接触的路径?

EN

回答 2

Stack Overflow用户

发布于 2014-02-19 20:06:22

我实现了一些类似的东西,用于检测填充多边形上的触摸。它使用的是Android区域。

原则是“放置”绘制在“区域”中的路径: region.setPath(mPath,新区域( (int) bounds.left,(int) bounds.top,(int) bounds.right,(Int) bounds.bottom));

然后检查触点是否在这个区域中: region.contains(point.x,point.y);

不知道这个“包含”方法是如何实现的,但是它是有效的,而且看起来相当有效。魔术。我想它也应该适用于多谱线。

您可以在这里查看完整的代码:http://code.google.com/p/osmbonuspack/source/browse/trunk/OSMBonusPack/src/org/osmdroid/bonuspack/overlays/Polygon.java

票数 0
EN

Stack Overflow用户

发布于 2014-03-13 08:16:59

我找不到解决我的问题的好办法,所以最后,我决定用以下的方式解决问题。

首先,我创建了我自己的PathOverlayExtended类,它是PathOverlay的一部分。然后,我添加了一些变量-路径区域的边界(最大和最小纬度和经度)。

其次,我检查点击坐标是否符合这个界限。这样,我只能得到那些可以被理解为与我的踢踏舞相关的路。

最后,我检查了从抽头坐标到每个线段的距离,并选择了最小的一个。就这样。

我用了viesturz的回答,这对我很有帮助:

https://code.google.com/p/osmdroid/issues/detail?id=36

谢谢你的回答!

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

https://stackoverflow.com/questions/21303678

复制
相关文章

相似问题

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