googlemaps / googlemaps/android-maps-compose

Clustering should support diff util

Aperta
#504 4 commenti 14 reazioni 0 assegnatari Vedi su GitHub
priority: p2 type: feature request
Lingua principale
Kotlin
Stelle
1.3k
Fork
181
Merge medio
2g 23h
PR unite (30g)
18

Descrizione

**Is your feature request related to a problem? Please describe.**
My map has millions of points so I cannot add all of them at once. Hence what map moves I download items only visible on screen. When user does only small map movements points and clusters flicker and animations looks bad. This is because current implementation look like this:
```
LaunchedEffect(itemsState) {
snapshotFlow { itemsState.value.toList() }
.collect { items ->
clusterManager.clearItems()
clusterManager.addItems(items)
clusterManager.cluster()
}
}
```
So when ever items are updated clustering is recreated.

**Describe the solution you'd like**
I think we should be able to provide some diffing to only add or remove a subset of items.

**Describe alternatives you've considered**
I also though about just coping whole `Clustering` method and add custom logic, but it's not possible to reuse `ResetMapListeners` method.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia tracciando l’implementazione di Clustering intorno alla raccolta itemsState mostrata e alle chiamate clusterManager clearItems/addItems/cluster. Leggi come viene usato ResetMapListeners, quindi determina il comportamento previsto per il confronto delle differenze tra gli elementi e verifica che i piccoli aggiornamenti della mappa non ricreino più tutti i cluster né causino problemi di sfarfallio e animazione.

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

Valutazione

Stack tecnologico
android, kotlin
Ambito
mobile
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.