如何在Android上控制地图上的缩放功能?包括放大和缩小。

3
在我的Android应用程序中,我有一个MapActivity。 当使用两个手指(pinch)缩放地图时,地图会缩小,但是当我放开手指时,它会进一步缩小。 意思是,如果伦敦在地图上居中,当我缩放时,伦敦会达到屏幕的边缘; 当我放开手指时,它会超出屏幕并进一步缩小。 我想要像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;
   .... 
  }
 }
}

你能试一下测试,在“捏合缩放”之后添加事件日志吗?我猜测会在 ACTION_POINTER_UP 或 ACTION_UP 之后注册 ACTION_MOVE。 - MikeIsrael
你找到解决方案了吗?我也遇到了同样的问题。 - Veer
@Veer 不,这是谷歌地图的行为。 - P Srinivas Goud
好的,我也检查了2.2版本的谷歌地图应用程序,它也表现出相同的问题(过度缩放)。但是如果您检查4.0版本的谷歌地图应用程序,则可以正常工作。但是当我们在4.0中实现我们的地图视图时,它会过度缩放。因此,我认为一定有解决方案... - Veer
@Veer 尝试安装4.1果冻豆系统,也许由于"Project Butter"有解决方案,但我不确定。 - P Srinivas Goud
3个回答

0

你尝试过zoomToSpan功能吗?

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

此外,您可以使用类似以下代码来限制最低缩放级别

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

0

试试这个

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

0

您可以通过在MapView中调用#getMaxZoomLevel()来获取可用的最大缩放级别。这是您能够获得的最接近的缩放级别,无论在官方Google Maps应用程序中发生什么。

mapView.getController().animateTo(geoPoint); mapView.getController().setZoom(15); mapView.invalidate();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接