2012-06-04 46 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();