【问题标题】:onTap(int i) event on ItemizedOverlay<OverlayItem> fires for only 1 itemItemizedOverlay<OverlayItem> 上的 onTap(int i) 事件仅针对 1 个项目触发
【发布时间】:2011-10-18 23:28:30
【问题描述】:

我正在使用 MapView(谷歌的)并在其上添加一些叠加层。 我使用自己的覆盖类,如下所示:

public class MyOverlay extends ItemizedOverlay<OverlayItem>

当我缩小并导致我的所有项目都位于同一位置并点击图像时,我在点击位置的所有项目中只有 1 个获得 onTap 事件。

我希望能够为我点击的地图上的位置下的每个项目获取 onTap 事件,或者能够在我按下的特定矩形处向地图询问所有项目。

这是我的调试代码:

@Override
protected boolean onTap(int i)
{                
    super.onTap(i);
    return false;           
}

每个叠加层只需点击 1 次。

有可能吗?怎么样?

谢谢。

【问题讨论】:

    标签: android android-layout android-mapview android-maps itemizedoverlay


    【解决方案1】:

    一种方式是这样的:(注意这是伪代码)

       // Over ride the onTouchEvent
       @Override
        public boolean onTouchEvent(MotionEvent event, final MapView mapView) {
            final int action=event.getAction();
            final int x = (int)event.getX();
            final int y = (int)event.getY();
            if (action == MotionEvent.ACTION_DOWN) {
            // get the zoom level 
            zoomLevel = mapView.getZoomLevel();
    
            if(zoomLevel > appropriateZoom)
            {
                  if(items != null) {
                    for(int i = 0; i < items.size(); i++){
                        OverlayItem item = items.get(i);
                        Point mp = new Point(0,0);
                        mapView.getProjection().toPixels(item.getPoint(), mp);
                        xDragTouchOffset=x-mp.x;
                        yDragTouchOffset=y-mp.y;
                        if (hitTest(item, marker, x-(mp.x-(xDragImageOffset+xDragTouchOffset*2)), y-(mp.y-((yDragImageOffset/2)+yDragTouchOffset)))) {
                       // This item has been tapped. Do what you want here. 
             }
    
            }
    

    这只是一个让您入门的想法/提示。

    【讨论】:

    • 难道不能注册到每个 OverlayItem 的 onTap 吗?这可能比开始计算缩放情况要好......
    • OverlayItem 不支持 onTap,但Overlay 支持。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    相关资源
    最近更新 更多