refactor(map): remplacer le polling de position par un callback LocationEngine #8
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
CyrilLeblanc/gresit#8
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
La position utilisateur vient du
LocationComponentMapLibre (ui/map/MapView.kt:167-180), qui gère le fix GPS et dessine le puck. Par-dessus, une boucle de polling maison (MapView.kt:192-202) relitlocationComponent.lastKnownLocationtoutes les 5 s (delay(5000L)) et pousse le résultat viaonLocationFix→TransitViewModel.updateUserLocation→userLat.Problèmes :
userLatprend jusqu'à ~5 s de retard sur le vrai fix (la boucle relit une valeur que MapLibre possède déjà).LocationComponenta déjà la position (lastKnownLocation) et la rafraîchit lui-même ; la bouclewhile/delayduplique ce mécanisme.TransitApp.kt:330appelleupdateUserLocation(lat, lng, 0f)— la précision est toujours 0.Comportement attendu
Remplacer la boucle de polling par un callback event-driven :
userLatse met à jour dès qu'un fix arrive, sans boucle occupée ni stale de 5 s.LocationComponentMapLibre (rendu du puck inchangé).onLocationFixappelé depuis unLocationEngineCallback<LocationEngineResult>, avec la vraie accuracy.while(true)/delay(5000)(MapView.kt:192-202).Pistes d'implémentation
LocationEngineetrequestLocationUpdates(request, callback, mainLooper); le callback appelleonLocationFix(loc.latitude, loc.longitude, loc.accuracy). Libérer viaremoveLocationUpdatesdans leonDispose.onLocationFix/updateUserLocation(ne plus hardcoder0f).LocationEngineRequest(5000 ms) peut rester ; la latence gagne surtout via la suppression de la couche de poll. Baisser l'intervalle = réglage ultérieur (trade-off batterie).Critères d'acceptation
while/delaypour la position (MapView.kt:192-202supprimée).userLatse rafraîchit à l'arrivée d'un fix (pas de stale de 5 s) — « Ma position » et le recentrage géolocalisation plus réactifs.userAccuracyreflète la vraie précision du fix (≠ 0).onDisposelibère le callback (pas de fuite).assembleDebug/assembleReleaseOK ; pas de régression sur la géolocalisation ni le Plan (origine « Ma position »).