我目前正在为我的基于位置的安卓应用程序规划我的数据库(在未来的某个时候,我将为iOS应用程序做准备)。
我想知道下面的结构是否适合我的需要。快速概述我的应用程序所涉及的内容:找到半径为2公里的用户(geofence),并显示他们的个人资料(类似于在Tinder上匹配某人)。
所以我的设想是,每个用户通过谷歌地图应用程序接口将他们的LatLon位置上传到我的数据库中,然后Android查询数据库来查找地理围栏中的用户。
PS:在geofence中查询用户的最佳方式是什么?
我建议的数据库是具有以下文档设置的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登录)尚未与之匹配。如果它还没有匹配,那么数据库将返回该用户的文档,并显示他们的个人资料信息以及来自谷歌云的个人资料图像。存储。
关于这个设置有没有什么我应该关注的危险信号--或者有更好的替代方案?
发布于 2019-05-29 12:15:54
既然您没有提到GeoFire,并且假装进行与地理相关的查询,那么GeoFire可能是最好的替代方案,
适用于安卓/Java的GeoFire
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实现相同的功能:
用于Objective-C的GeoFire
https://stackoverflow.com/questions/56350767
复制相似问题