2010-04-15 3 views
2

Я пытаюсь увеличить масштаб Google MapView на этапе oncreateMethod моей деятельности. Everytime я стараюсь приблизить карту через mapController я получаю IllegalArgumentException:IllegalArgumentException: ширина и высота должны быть> 0 во время zoomOut в Google MapView

04-15 10:16:51.012: ERROR/AndroidRuntime(528): java.lang.RuntimeException: Unable to start activity ComponentInfo{android.client/android.client.ui.showstores.StoreMap}: java.lang.IllegalArgumentException: width and height must be > 0 

Это исключение, если я вызываю функцию ZoomOut или ZoomIn из MapController. К сожалению, функция zoomIn, которую я использую, не принимает никаких аргументов.

onCreateMethod где я звоню функции масштабирования выглядит следующим образом:

mapView = (MapView) findViewById(R.id.map); 
    mapView.setBuiltInZoomControls(true); 
    MapController mapController = mapView.getController(); 
    mapController.zoomIn(); 

Я немного при потере здесь, потому что я не делаю ничего особенного.

Весь StackTrace является:

04-15 10:16:51.012: ERROR/AndroidRuntime(528): java.lang.RuntimeException: Unable to start activity ComponentInfo{android.client/android.client.ui.showstores.StoreMap}: java.lang.IllegalArgumentException: width and height must be > 0 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at android.app.ActivityThread.access$2100(ActivityThread.java:116) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at android.os.Looper.loop(Looper.java:123) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at android.app.ActivityThread.main(ActivityThread.java:4203) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at java.lang.reflect.Method.invoke(Method.java:521) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at dalvik.system.NativeStart.main(Native Method) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528): Caused by: java.lang.IllegalArgumentException: width and height must be > 0 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at android.graphics.Bitmap.nativeCreate(Native Method) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at android.graphics.Bitmap.createBitmap(Bitmap.java:468) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at com.google.android.maps.ZoomHelper.createSnapshot(ZoomHelper.java:305) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at com.google.android.maps.ZoomHelper.doZoom(ZoomHelper.java:137) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at com.google.android.maps.ZoomHelper.doZoom(ZoomHelper.java:126) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at com.google.android.maps.MapView.doZoom(MapView.java:1459) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at com.google.android.maps.MapView.doZoom(MapView.java:1468) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at com.google.android.maps.MapController.zoomIn(MapController.java:427) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at android.client.ui.showstores.StoreMap.onCreate(StoreMap.java:58) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364) 
04-15 10:16:51.012: ERROR/AndroidRuntime(528):  ... 11 more 

ответ

2

Android не устанавливает ширину и высоту взглядов, пока позже, так что это будет 0 в OnCreate. Я думаю, что представления определяют их размеры в методе «onLayoutChanged» или что-то подобное, возможно, вы можете переопределить его и сделать масштаб.

2

Вы можете попытаться вызвать методы масштабирования в onWindowFocusChanged (boolean hasFocus) вместо onCreate или onResume.

3

Я нашел обходное решение для этой ситуации.

int zoomSteps = 2; 

    int currentLatitudeSpan = mMapView.getLatitudeSpan(); 
    int currentLongitudeSpan = mMapView.getLongitudeSpan(); 

    int zoomedLatitudeSpan = 2 * zoomSteps * currentLatitudeSpan; 
    int zoomedLongitudeSpan = 2 * zoomSteps * currentLongitudeSpan; 

    mMapController.zoomToSpan(zoomedLatitudeSpan, zoomedLongitudeSpan);' 

Этот фрагмент увеличивает масштаб карты дважды

 Смежные вопросы

  • Нет связанных вопросов^_^