Пример сценария:
Допустим, в приложении есть два пользователя с именами A и B. Пользователь B находится на расстоянии 5 км от пользователя A. Пользователь A может видеть местоположение пользователя B, поскольку он находится с радиус 10 км от пользователя A. пользователь B всегда меняет свое местоположение, и пользователь A должен видеть в приложении измененное местоположение пользователя B в реальном времени.
Приложение использует карты Google и Google Firestore для сохранения данных о местонахождении этих пользователей.
Я написал код, позволяющий пользователям перемещаться вокруг пользователя А., когда он двигается.
Вот и все
const updateUserLocation = () => {
const coordinates = new Firebase.firestore.GeoPoint(region.latitude, region.longitude)
geocollection.doc(store.user.uid).set({
name: store.displayName,
uid: store.user.uid,
avatarUrl: store.photoURL,
score: 100,
coordinates
}, { merge: true }).then((docRef) => {
const center = new Firebase.firestore.GeoPoint(region.latitude, region.longitude)
const query = geocollection.near({ center, radius: 10 });
query.get().then((querySnapshot) => {
let nearByContact = []
// All GeoDocument returned by GeoQuery, like the GeoDocument added above
querySnapshot.docChanges().forEach((change) => {
nearByContact.push(change.doc)
})
setNearByUsers(nearByContact)
})
})
}
Но я хочу функцию, которая возвращает местоположение пользователя Б всякий раз, когда пользователь B меняет (документ пользователя B изменяется в firesotre, когда он перемещается), его местоположение в пределах заданного радиуса для пользователя A.
Я видел, что это может быть достигнуто с библиотекой firebase / geofire- js как у них есть ready, key_entered, key_exited и key_moved GeoQuery.on eventType и обратный вызов. Но он поддерживает только Firebase Databse. Я хочу добиться этого с помощью Firestore.