3

在我的 Android 应用程序中,我有一个 MapActivity,当用两根手指(捏)缩放地图时,它正在缩放,但是当我抬起手指时,它会进一步缩放。意思是,如果伦敦以地图为中心,当我放大伦敦时,它会到达屏幕的边缘;当我抬起手指时,它会离开屏幕,进一步放大。我希望它像 iOS 地图应用程序(无需进一步缩放)。我怎样才能做到这一点?

我尝试了以下代码,但没有奏效。

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;
   .... 
  }
 }
}
4

3 回答 3

0

尝试这个

    mapview.getController().animateTo(startGP);
    mapview.getController().setZoom(13);        
    mapview.setBuiltInZoomControls(true);
    mapview.invalidate();
于 2012-06-18T07:16:44.550 回答
0

您是否尝试过 zoomToSpan 功能?

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

此外,您可以使用类似这样的方式限制最低缩放

if (LOWEST_ZOOM_LEVEL < mMap.getZoomLevel() ) {
    mMapController.setZoom(LOWEST_ZOOM_LEVEL);
}
于 2012-06-18T06:42:12.823 回答
0

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

于 2012-06-18T07:11:38.503 回答