基于位置的应用程序的云数据库架构

时间:2019-05-28 22:21:43

标签: android google-maps

我目前正在为基于位置的Android应用(未来某个时候针对iOS应用的愿景)计划数据库。

我想知道以下结构是否适合我的需求。快速查看我的应用程序涉及的内容:在2公里半径(地理范围)内找到一个用户并显示其个人资料(类似于与Tinder上的某人匹配)。

因此,我如何设想每个用户都通过Google Maps API将他们的LatLon位置上传到我的数据库中,然后Android会查询数据库以在地理围栏内找到用户。

PS:在地理围栏内查询用户的最佳方法是什么?

我建议的数据库为Google Firestore,其中包含以下文档设置:

users: {
    2394824972439 (facebook_id): {
      gender: "male"
      currentLat: 37.234234,
      currentLon: 157.192835,
      profileImg1: googlecloudstorage.com/url/to/img1.png,
      profileImg2: googlecloudstorage.com/url/to/img2.png,
      bio: "This is my bio",
      alreadyMatchedWith: [42304823423, 23423423432, 023948230]
  }
    7388824972439: {
      gender: "female"
      currentLat: 34.234234,
      currentLon: 157.132835,
      profileImg1: googlecloudstorage.com/url/to/img1.png,
      profileImg2: googlecloudstorage.com/url/to/img2.png,
      bio: "Another bio",
      alreadyMatchedWith: [82304823423, 33423423432, 923948230]
  }
}

因此查询还将确保其他用户的Facebook ID(我正在使用Facebook登录)尚未匹配。如果与之不匹配,则数据库将返回该用户的文档,并显示其个人资料信息以及来自Google云的个人资料图像。存储。

我应该关注有关此设置的任何危险信号-或其他更好的选择吗?

1 个答案:

答案 0 :(得分:1)

由于您没有提到GeoFire,并且您假装进行与地理相关的查询,因此GeoFire可能是最好的选择,

GeoFire for Android / Java

https://github.com/firebase/geofire-java

// creates a new query around [37.7832, -122.4056] with a radius of 2.0 kilometers
GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(37.7832, -122.4056), 2.0);

在这种情况下,您必须为IOS实现相同的功能:

GeoFire for Objective-C

https://github.com/firebase/geofire-objc