2012-06-04 44 views
3

在我的Android应用程序中,我有一个MapActivity,当用两个手指缩放地图时(缩小)它缩放,但是当我抬起手指时,它会进一步缩放。意思是,如果伦敦在地图上居中,当我缩放伦敦时,会到达屏幕的边缘;当我抬起手指时,它会离开屏幕,进一步缩放。我想要它像iOS地图应用程序(没有进一步缩放)。我怎样才能做到这一点?如何控制捏放大,缩小Android上的地图?

我试过下面的代码,但没有工作。

class MapOvelay extends Overlay { 
    boolean moveTouch; 
    int i; 

    @Override 
    public boolean onTouchEvent(MotionEvent event, MapView mapView) { 
     switch (event.getAction()) {  
     case MotionEvent.ACTION_POINTER_UP://when two fingers are lifted 
      mapController.setZoom(i); 
      i=0; 
      break; 

     case MotionEvent.ACTION_MOVE://when two fingers are moving on map 
      i = mapView.getZoomLevel(); 
      moveTouch = true; 
      break; 
    .... 
    } 
} 
} 
+0

可以尝试测试,并添加事件的日志捏放大我猜有一个ACTION_POINTER_UP之后注册的ACTION_MOVE或ACTION_UP – MikeIsrael

+0

你有没有找到解决方案?我也面临同样的问题。 – Veer

+0

@Veer不...其谷歌地图行为。 –

回答

0

您是否试过zoomToSpan功能?

mMapController.zoomToSpan(maxLatitude - minLatitude,maxLongitude - minLongitude); 

此外,您还可以这样

if (LOWEST_ZOOM_LEVEL < mMap.getZoomLevel()) { 
    mMapController.setZoom(LOWEST_ZOOM_LEVEL); 
} 
1

限制最低变焦的东西你可以通过提供在MapView的调用#getMaxZoomLevel()的最大缩放级别。无论官方Google地图应用程序中发生了什么,这都是您能够获得的最接近的缩放比例。 mapView.getController().animateTo(geoPoint); mapView.getController().setZoom(15); mapView.invalidate();

0

试一下这个

mapview.getController().animateTo(startGP); 
    mapview.getController().setZoom(13);   
    mapview.setBuiltInZoomControls(true); 
    mapview.invalidate();