【发布时间】:2014-07-17 20:55:00
【问题描述】:
我有 mapView 并以编程方式处理触摸事件。
问题是:如果mapview是ZoomOut到最大,平移会很小很慢,符合mapView是ZoomIn,平移会更大更快。换句话说:zoomIN 越大,平移运动越大。
如何使平移移动不相应缩放,所以每次移动地图时,无论缩放级别如何,它都会移动相同的距离?
这是我的安卓客户端
private double savedTouchedX = -1;
private double savedTouchedY = -1;
....
mapView.setOnTouchListener(new MapView.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent event) {
int action = event.getAction();
switch(action)
{
case MotionEvent.ACTION_DOWN:
savedTouchedX = event.getX();
savedTouchedY = event.getY();
break;
case MotionEvent.ACTION_MOVE:
doPanning(event, mapView);
break;
case MotionEvent.ACTION_UP:
doPanning(event, mapView);
savedTouchedX = -1;
savedTouchedY = -1;
break;
default:
break;
}
return true;
}
});
....
//move mapView
private boolean doPanning(MotionEvent e, MapView mapView)
{
if(savedTouchedX >= 0 && savedTouchedY >= 0)
{
IGeoPoint mapCenter = mapView.getMapCenter();
GeoPoint panToCenter = new GeoPoint((int)(mapCenter.getLatitudeE6() + (e.getY() - savedTouchedY) * 1E5),
(int)(mapCenter.getLongitudeE6() - (e.getX() - savedTouchedX) * 1E5));
mapView.getController().setCenter(panToCenter);
}
savedTouchedX = e.getX();
savedTouchedY = e.getY();
return true;
}
【问题讨论】:
标签: android android-mapview osmdroid android-framelayout touch-event