Open l2-map-dev opened 10 months ago
Can you try the onStyleLoadedCallback, please?
Thanks for the reply! As I mentioned above, I did give that a try and unfortunately it had the same result. Even in the onStyleLoadedCallback
, the camera remains at its initial position. I used mapController.getVisibleRegion()
to verify this and the bounds of the map are identical before and after the call to moveCamera
.
This issue specifically affects iOS devices, while it functions perfectly on Android devices. The problem originates from the onMapCreated and onStyleLoaded callbacks, which are triggered prematurely on iOS. The question is, what is not being waited for? Maybe @josxha, do you have an idea ?
Apparently, onMapCreated()
and onStyleLoaded
aren't save to call operations on the map from on iOS. I haven't looked at the at the ios implementation in depth. On android the onMapCreated() callback get's awaited internally to ensure the map has loaded. This callback does not exist in the iOS SDK. There seems to be some code in swift to work around this but it's currently not clear to me why it is done the way it is.
I see now, thanks for the clarification. The problem is that there isn't a proper solution, which is really frustrating. The only workaround so far is to add a delay.
Yep, I agree. Have you tried to enforce the viewport of the map with the cameraTargetBounds
parameter and changing the bounds afterwards to unbound? (Problably again after a delay)
I want to initialize a map with an initial bounding box, and since
initialCameraPosition
appears to only support specifying a center position and zoom level, it appears the appropriate way to accomplish this is by callingmoveCamera()
in theonMapCreated
callback like so:However, this call to moveCamera doesn't seem to do anything; the camera position remains at whatever the initial camera position was set to when creating the widget.
Sleeping with a future before running the update resolves the issue, but this is obviously hacky and I'd like to find a more reliable solution.
I've also tried using
to delay calling
moveCamera()
until after the widget has been initialized, and oddly, using this method, the camera moves partially to the new position, but stops before reaching the new bounding box.I've tried all of the above in
onStyleLoaded()
as well with no luck. It seems as though even at the pointonMapCreated()
oronStyleLoaded()
are run, some state still isn't initialized which prevents the camera update from functioning. Can anyone offer some help here?