googlemaps / googlemaps/android-maps-compose

Map initialization with desired configuration is delayed

Aperta
#491 6 commenti 2 reazioni 0 assegnatari Vedi su GitHub
priority: p3 type: bug
Lingua principale
Kotlin
Stelle
1.3k
Fork
181
Merge medio
2g 23h
PR unite (30g)
18

Descrizione

Setting an initial camera position for the GoogleMap is commonly done by passing an appropriately initialized CameraPositionState parameter to the GoogleMap() Composable.

While reviewing the android-maps-compose code (4.3.0) I noticed that the GoogleMap camera is moved to its initial requested position (via CameraPositionState) only during the (sub-) composition apply phase. I believe this means that the entire initial sub-composition (short of applying) has to complete first. I think this could mean a significant delay in map position initialization, in particular if the sub-composition is fairly sizable.

Delaying map position initialization implies that loading tiles for the desired position is delayed. It would also mean additional visual artifacts, such as missing tiles and visually changing the map center from (0.0, 0.0) to the desired camera location.

From looking at the code I think it would be fairly easy and trouble-free to preempt the delay. The desired position is readily available before initializing the subcomposition and can be set right after `awaitMap()` has returned.

In terms of correctness, the parent composition would have completed at this point already, so the information from CameraPositionState can be considered valid/committed. I would expect that at this point the `MapView` would start being rendered, so the initial camera position should be set pronto.

Does this make sense? Looking for feedback.

https://github.com/googlemaps/android-maps-compose/blob/4b7967d15f8add4589e7d02cf8bf71f1c594f59d/maps-compose/src/main/java/com/google/maps/android/compose/GoogleMap.kt#L158-L168

https://github.com/googlemaps/android-maps-compose/blob/4b7967d15f8add4589e7d02cf8bf71f1c594f59d/maps-compose/src/main/java/com/google/maps/android/compose/GoogleMap.kt#L126-L129

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia da maps-compose/src/main/java/com/google/maps/android/compose/GoogleMap.kt, in particolare dalle sezioni collegate intorno alle righe 126-129 e 158-168. Leggi come awaitMap() e la subcomposizione iniziale interagiscono attualmente, quindi verifica se l’inizializzazione può avvenire prima senza modificare il comportamento confermato di CameraPositionState. Il lavoro è completato quando la posizione iniziale della fotocamera richiesta viene applicata tempestivamente e gli artefatti di posizionamento intermedio della mappa segnalati vengono risolti.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
android, kotlin
Ambito
mobile-dev
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.