Firebase: запрос по ближайшему местоположению - PullRequest
0 голосов
/ 21 мая 2018

Firebase может хранить документы с объектом Geopoint.https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/GeoPoint

Но мы не можем использовать фильтр диапазона для разных полей, и это необходимо для запроса местоположения.

Как я понял год назад, была возможность создавать такие запросы с использованием Geofire Запрос для близлежащих местоположений

Но теперь он устарел и не работает.

Что такое текущее решение?

1 Ответ

0 голосов
/ 21 мая 2018

Вы можете сделать запрос, используя GeoPoint Объекты Firestore и GreatherThan вместе с LessThan.Вы должны добавить свою собственную точность вместо того, чтобы использовать только одну милю расстояния.

fun Query.getNearestLocation(latitude: Double, longitude: Double, distance: Double): Query {
    // ~1 mile of lat and lon in degrees
    val lat = 0.0144927536231884
    val lon = 0.0181818181818182

    val lowerLat = latitude - (lat * distance)
    val lowerLon = longitude - (lon * distance)

    val greaterLat = latitude + (lat * distance)
    val greaterLon = longitude + (lon * distance)

    val lesserGeopoint = GeoPoint(lowerLat, lowerLon)
    val greaterGeopoint = GeoPoint(greaterLat, greaterLon)

    val docRef = FirebaseFirestore.getInstance().collection("locations")
    return docRef
            .whereGreaterThan("location", lesserGeopoint)
            .whereLessThan("location", greaterGeopoint)
}

Этот код является переводом Kotlin от кода, сделанного Райаном Ли на этом посте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...