Android 基于位置的应用程序的云数据库体系结构

Android 基于位置的应用程序的云数据库体系结构,android,google-maps,Android,Google Maps,我目前正在为我的基于位置的Android应用程序规划我的数据库(将来某个时候iOS应用程序的愿景) 我想知道下面的结构是否适合我的需要。快速概述我的应用程序所涉及的内容:在2公里半径(地理围栏)内找到一个用户,并显示他们的个人资料(类似于与Tinder上的某个人进行匹配) 因此,我的设想是,每个用户都通过谷歌地图API将自己的LatLon位置上传到我的数据库中,安卓通过查询数据库在地理围栏内找到一个用户 PS:在地理围栏内查询用户的最佳方式是什么 我建议的数据库具有以下文档设置: users:

我目前正在为我的基于位置的Android应用程序规划我的数据库(将来某个时候iOS应用程序的愿景)

我想知道下面的结构是否适合我的需要。快速概述我的应用程序所涉及的内容:在2公里半径(地理围栏)内找到一个用户,并显示他们的个人资料(类似于与Tinder上的某个人进行匹配)

因此,我的设想是,每个用户都通过谷歌地图API将自己的
LatLon
位置上传到我的数据库中,安卓通过查询数据库在地理围栏内找到一个用户

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

我建议的数据库具有以下文档设置:

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登录)尚未匹配。如果没有匹配,数据库将返回该用户的文档,并显示他们的个人资料信息以及来自谷歌云的个人资料图像。储藏室


是否有任何关于这个设置的危险信号我应该关注-或任何更好的选择

因为您没有提到GeoFire,并且您假装做与地理相关的查询,GeoFire可能是最好的选择

GeoFire for Android/Java

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

目标C的GeoFire


太棒了-谢谢。这是一个为Firestore复制GeoFire的库:我会试试它。我不知道Firestore已经提供了相同的地理功能。是时候迁移我在Firebase上运行的项目了!
// 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);