2012-07-19 73 views
1

即使地图视图移动,onTap侦听器如何在android地图视图中工作。 实际上我正在根据用户的方向旋转地图视图。onTap如何在android中工作mapview

我从sesor经理越来越方位角。

如果角度为0和Ontap工作正常上Pin.If角度改变说20中的onTap不上针正好工作它的工作原理后,一些空间针旁边。

我采取旋转视图,我采取的MapView。现在我改变轴承旋转后rotateview内。

RotateView设置轴承代码

@Override 
    protected void dispatchDraw(Canvas canvas) { 

     canvas.save(Canvas.MATRIX_SAVE_FLAG); 

    //if mHeading is zero its work otherwise onTap position is changing 
     canvas.rotate(mHeading, getWidth()/2, getHeight()); 

     mCanvas.delegate = canvas; 
     super.dispatchDraw(mCanvas); 
     canvas.restore(); 
    } 

叠加类

public class SonarOverlay1 extends ItemizedOverlay<OverlayItem> 
{ 
    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); 
    private Context mContext; 
public SonarOverlay1(Drawable defaultMarker,Context context) { 
    super(boundCenter(defaultMarker)); 
    this.mContext=context; 

    populate(); 
} 

@Override 
protected OverlayItem createItem(int arg0) { 

    return mOverlays.get(arg0); 
} 
public void addOverlay(OverlayItem item) { 
    mOverlays.add(item); 
    populate(); 

} 

@Override 
public int size() { 
//Log.e("overlay size..",""+mOverlays.size()); 
    return mOverlays.size(); 
} 


@Override 
protected boolean onTap(int index) { 
    // TODO Auto-generated method stub 

     OverlayItem item = mOverlays.get(index); 
     AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); 
     dialog.setTitle(item.getTitle()); 
     dialog.setMessage(item.getSnippet()); 
     dialog.show(); 
     return true; 
} 
} 
+0

你会解释更详细? – SALMAN 2012-07-19 12:28:20

+0

我编辑了我的问题,请帮助我 – koti 2012-07-19 12:35:37

+0

什么是PIN码是您在MapView上制作的一个标记? – SALMAN 2012-07-19 12:37:24

回答

1

看一看MapsDemo例子

ANDROID_SDK \插件\插件-google_apis-google_inc_-7 \样品\ MapsDemo。

它有旋转地图演示。

旋转MapView的最简单方法

谢谢。

+0

如需进一步解释,您可以发表评论,如果它可以帮助你忘记接受我的答案,并投票给我:)谢谢。 – SALMAN 2012-07-19 12:42:26

+0

我所用,如果方位角为0它的工作,如果轴承改变其不销 – koti 2012-07-19 12:43:15

+0

准确工作,就可以请张贴您的代码段在这里,这样我可以找出你的问题,因为我已经使用了几次,上述教程并没有让我失望。由于 – SALMAN 2012-07-19 12:45:29

1

这里边旋转地图,我们要为地图也随之旋转触摸evnts使用onDispatchTouch方法

看到下面的代码

@Override 
    public boolean dispatchTouchEvent(MotionEvent event) { 
     float[] coords = new float[] { 
       event.getX(), event.getY() 
     }; 
     adjustCoords(coords, getRotation()); 
     MotionEvent evt = MotionEvent.obtain(event.getDownTime(), event.getEventTime(), event 
       .getAction(), coords[0], coords[1], event.getPressure(), event.getSize(), event 
       .getMetaState(), event.getXPrecision(), event.getYPrecision(), event.getDeviceId(), 
       event.getEdgeFlags()); 
     return super.dispatchTouchEvent(evt); 
    } 
    protected void adjustCoords(float[] coords, float deg) { 
     float x = coords[0]; 
     float y = coords[1]; 
     int centerX = getWidth()/2; 
     int centerY = getHeight()/2; 
     // convert to radians 
     float rad = (float) ((deg * Math.PI)/180F); 
     float s = (float) Math.sin(rad); 
     float c = (float) Math.cos(rad); 
     // translate point back to origin: 
     x -= centerX; 
     y -= centerY; 
     // apply rotation 
     float tmpX = x * c - y * s; 
     float tmpY = x * s + y * c; 
     x = tmpX; 
     y = tmpY; 
     // translate point back: 
     x += centerX; 
     y += centerY; 
     coords[0] = x; 
     coords[1] = y; 
    } 

请参考以下链接

How to manage overlays in MapViewCompassDemo in android sdk samples