我正在使用 MapViewCompassDemo 示例
\add-ons\addon-google_apis-google_inc_-7\samples\MapsDemo\
用于根据用户方向旋转地图视图。这是有效的
如果地图没有叠加层,那就完美了。但是如果我添加叠加层来映射 ontap 不能完全工作
旋转时在标记上。任何人都可以帮助我解决这个问题。
在此示例中,它仅旋转 dispatchDraw 方法。与 dispatchDraw 一起旋转
dispatchTouchEvent also.find 下面的代码也可以旋转触摸事件
@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/