Как контролировать масштабирование, уменьшение масштаба на карте в Android?

В моем приложении для 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;
   .... 
  }
 }
}

3 ответа

Вы можете получить максимальный доступный уровень масштабирования, вызвав #getMaxZoomLevel() в MapView. Это самый близкий к вам масштаб, независимо от того, что происходит в официальном приложении Google Maps.mapView.getController().animateTo(geoPoint);mapView.getController().setZoom(15);mapView.invalidate();

Попробуй это

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

Вы пробовали функцию zoomToSpan?

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

Кроме того, вы можете ограничить самый низкий зум что-то вроде этого

if (LOWEST_ZOOM_LEVEL < mMap.getZoomLevel() ) {
    mMapController.setZoom(LOWEST_ZOOM_LEVEL);
}
Другие вопросы по тегам