目前百度地图的缩放级别为(3-18),有时候我们不需要这样的范围,可能是 (5-14),约束用户查看地图级别
目前网上我没找到其他实现方法,然后自己研究了一下,把地图原有的缩放按钮去掉的话,有三种情况会产生缩放行为的,
1、自定义的缩放按钮,可以在该缩放事件里面判断
if (mapView.getZoomLevel()<zoomlevel) { mapController.zoomIn(); }
2、双击地图产生缩放行为:在地图状态监听内,根据获取到的缩放级别,触发状态事件,根据范围来判断然后给双击事件设置开关
mapView.regMapStatusChangeListener(new MKMapStatusChangeListener() { @Override public void onMapStatusChange(MKMapStatus status) { // TODO Auto-generated method stub if (status.zoom>=zoomlevel) { if (mapView.isDoubleClickZooming()) { mapView.setDoubleClickZooming(false); } }else { if (!mapView.isDoubleClickZooming()) { mapView.setDoubleClickZooming(true); } } } });3、地图两点手指缩放:为百度地图添加 触摸事件,在给予多点触摸判断,再计算两点距离变化值,就可以控制缩放级别了,返回true 就是不传递事件下去,禁止了百度地图放大,
mapView.setOnTouchListener(this); @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_POINTER_DOWN: isTouch = true; distance = 0; break; case MotionEvent.ACTION_POINTER_UP: isTouch = false; break; case MotionEvent.ACTION_UP: isTouch = false; break; case MotionEvent.ACTION_MOVE: if (isTouch) { //判断多点移动 float mill = spacing(event); //两点距离 if (mill>distance) { if (mapView.getZoomLevel()>=zoomlevel) { //超出范围 distance = mill; return true; } } distance = mill; } break; default: break; } return false; } /** * 计算两点距离 * * @param event * @return */ private float spacing(MotionEvent event) { float x = event.getX(0) - event.getX(1); float y = event.getY(0) - event.getY(1); return FloatMath.sqrt(x * x + y * y); }
maven学习笔记之——maven简介,布布扣,bubuko.com
原文:http://blog.csdn.net/crave_shy/article/details/23933171