Xamarin.Forms.PancakeView
Xamarin.Forms.PancakeView copied to clipboard
Map Inside PancakeView Error
Error
When placing a Xamarin.Forms.Map inside a PancakeView that is hidden, the following error is popping up :
[0:] Xamarin.Forms MapRenderer: MoveToRegion exception: Java.Lang.IllegalStateException: Error using newLatLngBounds(LatLngBounds, int): Map size can't be 0. Most likely, layout has not yet occured for the map view. Either wait until layout has occurred or use newLatLngBounds(LatLngBounds, int, int, int) which allows you to specify the map's dimensions.
at Java.Interop.JniEnvironment+InstanceMethods.CallNonvirtualVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniObjectReference type, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x0008e] in <26521a5118b44c858c385715922b9d5d>:0
at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeNonvirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x0001f] in <26521a5118b44c858c385715922b9d5d>:0
at Android.Gms.Maps.GoogleMap.MoveCamera (Android.Gms.Maps.CameraUpdate update) [0x00031] in <e46b305bb5474cdf831e1d89c34fef19>:0
at Xamarin.Forms.Maps.Android.MapRenderer.MoveToRegion (Xamarin.Forms.Maps.MapSpan span, System.Boolean animate) [0x000c5] in <47a2a91c56584498b8fe9e2ebc17ae05>:0
--- End of managed Java.Lang.IllegalStateException stack trace ---
com.google.maps.api.android.lib6.common.apiexception.c: Error using newLatLngBounds(LatLngBounds, int): Map size can't be 0. Most likely, layout has not yet occured for the map view. Either wait until layout has occurred or use newLatLngBounds(LatLngBounds, int, int, int) which allows you to specify the map's dimensions.
at com.google.maps.api.android.lib6.common.m.b(:com.google.android.gms.policy_maps_dynamite@[email protected]:6)
at com.google.maps.api.android.lib6.gmm6.api.c.a(:com.google.android.gms.policy_maps_dynamite@[email protected]:36)
at com.google.maps.api.android.lib6.impl.y.a(:com.google.android.gms.policy_maps_dynamite@[email protected]:0)
at com.google.maps.api.android.lib6.gmm6.api.c.a(:com.google.android.gms.policy_maps_dynamite@[email protected]:47)
at com.google.maps.api.android.lib6.impl.bi.a(:com.google.android.gms.policy_maps_dynamite@[email protected]:250)
at com.google.android.gms.maps.internal.i.a(:com.google.android.gms.policy_maps_dynamite@[email protected]:174)
at cl.onTransact(:com.google.android.gms.policy_maps_dynamite@[email protected]:4)
at android.os.Binder.transact(Binder.java:627)
at com.google.android.gms.internal.maps.zza.zzb(Unknown Source:20)
at com.google.android.gms.maps.internal.zzg.moveCamera(Unknown Source:20)
at com.google.android.gms.maps.GoogleMap.moveCamera(Unknown Source:13)
at crc648aad9efe354a1d8f.MapRenderer.n_onLayout(Native Method)
at crc648aad9efe354a1d8f.MapRenderer.onLayout(MapRenderer.java:49)
at android.view.View.layout(View.java:19659)
at android.view.ViewGroup.layout(ViewGroup.java:6075)
at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout(FormsViewGroup.java:37)
at crc643f46942d9dd1fff9.VisualElementRenderer_1.n_onLayout(Native Method)
at crc643f46942d9dd1fff9.VisualElementRenderer_1.onLayout(VisualElementRenderer_1.java:90)
at android.view.View.layout(View.java:19659)
at android.view.ViewGroup.layout(ViewGroup.java:6075)
at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout(FormsViewGroup.java:37)
at crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_onLayout(Native Method)
at crc643f46942d9dd1fff9.Platform_DefaultRenderer.onLayout(Platform_DefaultRenderer.java:72)
at android.view.View.layout(View.java:19659)
at android.view.ViewGroup.layout(ViewGroup.java:6075)
at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout(FormsViewGroup.java:37)
at crc643f46942d9dd1fff9.PageRenderer.n_onLayout(Native Method)
at crc643f46942d9dd1fff9.PageRenderer.onLayout(PageRenderer.java:72)
at android.view.View.layout(View.java:19659)
at android.view.ViewGroup.layout(ViewGroup.java:6075)
at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout(FormsViewGroup.java:37)
at crc64720bb2db43a66fe9.NavigationPageRenderer.n_onLayout(Native Method)
at crc64720bb2db43a66fe9.NavigationPageRenderer.onLayout(NavigationPageRenderer.java:65)
at android.view.View.layout(View.java:19659)
at android.view.ViewGroup.layout(ViewGroup.java:6075)
at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout(FormsViewGroup.java:37)
at crc643f46942d9dd1fff9.PlatformRenderer.n_onLayout(Native Method)
at crc643f46942d9dd1fff9.PlatformRenderer.onLayout(PlatformRenderer.java:63)
at android.view.View.layout(View.java:19659)
at android.view.ViewGroup.layout(ViewGroup.java:6075)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1083)
at android.view.View.layout(View.java:19659)
at android.view.ViewGroup.layout(ViewGroup.java:6075)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:19659)
at android.view.ViewGroup.layout(ViewGroup.java:6075)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:19659)
at android.view.ViewGroup.layout(ViewGroup.java:6075)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:19659)
at android.view.ViewGroup.layout(ViewGroup.java:6075)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1544)
at android.view.View.layout(View.java:19659)
at android.view.ViewGroup.layout(ViewGroup.java:6075)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:761)
at android.view.View.layout(View.java:19659)
at android.view.ViewGroup.layout(ViewGroup.java:6075)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2496)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2212)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:440)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Reproduce :
<pancakeview:PancakeView BackgroundColor="White" IsVisible="false" Elevation="2" CornerRadius="32" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Padding="4">
<maps:Map x:Name="map" Margin="-5" MapType="Street" >
<x:Arguments>
<maps:MapSpan>
<x:Arguments>
<maps:Position>
<x:Arguments>
<x:Double>49.818851</x:Double>
<x:Double>6.103406</x:Double>
</x:Arguments>
</maps:Position>
<x:Double>0.7</x:Double>
<x:Double>1.2</x:Double>
</x:Arguments>
</maps:MapSpan>
</x:Arguments>
</maps:Map>
</pancakeview:PancakeView>
I think this is a map problem, i had the same error once, without pancakeview. Try removing the mapspan
I agree, this doesn't seem to be specifically related to PancakeView. The crash happens in map-related code, so not sure how much I can do about that.
Might be true, but the error only appears if the map is placed inside a pancake view. I guess it has something to do with the initialization not happening correctly