我目前正在为基于位置的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云的个人资料图像。存储。
我应该关注有关此设置的任何危险信号-或其他更好的选择吗?
答案 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