Attualmente sto usando firebase che mi limita a domande semplici e perché voglio evitare di usare il keyEntered
modo di gestire le query geografiche di geoFire ho deciso di cimentarmi con la mia (ingenua) implementazione. Non sono convinto al 100% che sia corretto e ho bisogno di un controllo di sanità mentale.
dal mio database ottengo il seguente:
key: {
lat: 40,
lng: -73
}
Voglio interrogare tutto entro ~ 200 metri dalla mia posizione attuale, quindi faccio il seguente (semi pseudo codice):
firebase
.startAt(currentLongitude)
.endAt(currentLongitude + 0.002)
firebase
.startAt(currentLatitude)
.endAt(currentLatitude + 0.002)
La mia ipotesi qui è che 3 (0,001) posti decimali equivalgono a circa 111 metri. Quindi memorizzo i risultati in lat
e lng
matrici.
A questo punto presumo anche che avrò alcuni sovrapposizioni / duplicati, quindi uso% s di lodash di lodash su di esso in questo modo (le voci hanno ID univoci):
uniq
Quindi presumo che il risultato sarà una lista corretta di voci non più lunghe di 222 metri (da dare o da fare).
Mi manca qualcosa? Sono sulla buona strada? Dovrei usare il modo basato su eventi di geoFire per farlo (che - secondo me - spara troppi eventi e causa molti db read)?