我正在使用Firebase构建类似于Uber的iOS应用。我的问题是使应用程序可扩展的后端效率。
我需要能够按位置实时组织驾驶员和乘客,以便当用户访问应用程序以请求驾驶员时,只会显示该特定用户区域中的驾驶员。理想情况下,我的数据库结构如下所示:
驱动程序
车手
这样,当搜索要在地图视图上显示的驱动程序时,API调用比将所有驱动程序/乘客集中到一个大数据结构中的效率要高得多。
我能想到的唯一方法是使用 CLGeoCoder()并使用反向地理编码在每次加载应用程序时更新数据库中的骑手/驱动程序区域。并且还监控用户退出或进入新区域的时间。有一个更好的方法吗?关于Uber如何仅在特定区域内显示驱动程序,您最好的猜测是什么?
答案 0 :(得分:1)
您可以在特定区域内使用GeoFire和查询位置;
var geoQuery = geoFire.query({
center: [10.38, 2.41],
radius: 10.5
});
var radius = geoQuery.radius(); // radius === 10.5
https://github.com/firebase/geofire-js/blob/master/docs/reference.md#geoqueryradius