You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Description
When interacting with the map using gestures like panning or flinging, the mapViewDidFinishRenderingFrameFullyRendered should be called in MLNMapView in order to adapt to the updated view. The NavigationMapView of maplibre-navigation-ios inherits from MLNMapView and overrides the function to update the puck position for certain cases. Since the 6.0.0 update, the function is not called, which causes massive problems with the behavior of the puck movement during active navigation.
To Reproduce
Run any iOS application with a MLNMapView
Add a breakpoint to the mapViewDidFinishRenderingFrameFullyRendered
pan or fling the map
Expected behavior mapViewDidFinishRenderingFrameFullyRendered is called with each update caused by the gesture.
Actual behavior mapViewDidFinishRenderingFrameFullyRendered is not called.
The title of this issue might be misleading, because this was actually in the context of NavigationMapView in maplibre-navigation-ios which is a subclass of MLNMapView.
The method signature for MLNMapView.mapViewDidFinishRenderingFrameFullyRendered changed in 76469a0 and then again in 8ad5f9c
The reason this occurred without anyone noticing, is that this is a private method. maplibre-navigation-ios was only able to call it because we've copied in part of the private header. When the method signature change, our copied header became stale, and our "overridden" method was no longer being called.
Longer term, I'm not really sure what the right solution is. I think this is a frequent point of tension trying to reconcile inheritance and delegation.
Some alternatives:
We could make this method public and use the public header instead of the private one.
We could utilize mapView.delegate in the NavigationMapView implementation. This seems tricky though, since we also want downstream users to be able to implement their own MLNMapViewDelegate for the NavigationMapView.
Description
When interacting with the map using gestures like panning or flinging, the
mapViewDidFinishRenderingFrameFullyRendered
should be called inMLNMapView
in order to adapt to the updated view. TheNavigationMapView
of maplibre-navigation-ios inherits fromMLNMapView
and overrides the function to update the puck position for certain cases. Since the 6.0.0 update, the function is not called, which causes massive problems with the behavior of the puck movement during active navigation.To Reproduce
MLNMapView
mapViewDidFinishRenderingFrameFullyRendered
Expected behavior
mapViewDidFinishRenderingFrameFullyRendered
is called with each update caused by the gesture.Actual behavior
mapViewDidFinishRenderingFrameFullyRendered
is not called.Screenrecording
puck.mp4
Platform information :
Additional context
The related issue for maplibre-navigation-ios: maplibre/maplibre-navigation-ios#27
The text was updated successfully, but these errors were encountered: