如何

2012-07-20 57 views
3

我使用從如何

\add-ons\addon-google_apis-google_inc_-7\samples\MapsDemo\ 

旋轉基於用戶direction.This地圖視圖工作

完全如果地圖是不覆蓋MapViewCompassDemo樣品Android SDK中的樣品在管理MapViewCompassDemo覆蓋。但如果我添加覆蓋映射ontap不能正常工作

on marker while rotating。任何人都可以幫助我解決這個問題。

此示例中

回答

2

只旋轉dispatchDraw方法only.Along與dispatchDraw旋轉

dispatchTouchEvent also.find下面的代碼旋轉toouch事件也

@Override 
    public void dispatchDraw(Canvas canvas) { 
     canvas.save(); 
     canvas.rotate(getRotation(), getWidth()/2, getHeight()/2); 
     super.dispatchDraw(canvas); 
     canvas.restore(); 
    } 

@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; 
    } 

看到這個鏈接如下

http://evancharlton.com/thoughts/android-rotating-touch-events/