将带有坐标的标记上传到 Firebase,并在 React Native 应用程序上向其他用户显示它们

Upload markers with coordinates to Firebase and show them to other users on React Native app

我正在使用 Firebase + React Native 开发犯罪地图。 我想在 Firebase 上保存用户在 he/she 触摸地图后生成的标记的坐标(包括其他字段,例如犯罪类型、详细信息等) 因此,一旦将标记保存到 Firebase 上,我想在同一张地图上将它们显示给其他用户,同时将前面提到的字段显示为信息。

这可能吗?如果是这样,实现这一目标的最佳方法是什么? 用户后端已经实现,包括 google 地图的 react-native-maps 库。

假设您有 2 类用户:

  1. A 组用户:报告犯罪的信息包括犯罪现场位置坐标。

  2. B 组用户:通过即时更新地图上的犯罪现场来监控举报的犯罪。

使用 Firebase 的 Firestore,创建一个名为 crimescollection,应用程序将 GROUP A USER 报告的新报告犯罪添加为 document

每个犯罪 document 必须包含犯罪现场位置的坐标。react-native-mapsonPress 个事件道具,其 return 在地图上用户点击的坐标.

犯罪的 document 应该是这样的:


const crime = {
type:"CRIME_TYPE",
coordinates:{
longitude:30,0988,
latitude:-1.98777,
//... more details
}

当用户报案时添加此文档

// Define reported crime document information
const crime = {
type:"CRIME_TYPE",
coordinates:{
longitude:30,0988,
latitude:-1.98777,
}
//... more details
}


// Firestore crimes collection reference
const  crimesRef  = firestore.collection('crimes')

// add new reported crime document in collection
crimesRef.add(crime)

在此阶段,用户已举报(提交)犯罪。我们需要通知 B 组用户有关新报告的犯罪。

B 组用户应订阅 crimes 集合,尤其是在添加新文档时。

firestore.collection("crimes")
    .onSnapshot((snapshot) => {
        snapshot.docChanges().forEach((change) => {
            if (change.type === "added") {
                console.log("New reported crime: ", change.doc.data());
                // add logic to update map with new reported crime data

            }
            if (change.type === "modified") {
                console.log("Modified crime : ", change.doc.data());
            }
            if (change.type === "removed") {
                console.log("Removed crime: ", change.doc.data());
            }
        });
    });


我没有涵盖所有实施细节,这只是一个简短的概述。