Xamarin.Forms.PancakeView icon indicating copy to clipboard operation
Xamarin.Forms.PancakeView copied to clipboard

Map Inside PancakeView Error

Open tomh4 opened this issue 5 years ago • 3 comments

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>

tomh4 avatar May 27 '20 18:05 tomh4

I think this is a map problem, i had the same error once, without pancakeview. Try removing the mapspan

themronion avatar Aug 01 '20 08:08 themronion

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.

sthewissen avatar Aug 01 '20 14:08 sthewissen

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

tomh4 avatar Aug 02 '20 15:08 tomh4