使用地理位置为iOS应用程序组织后端,类似于优步

时间:2018-03-12 22:27:49

标签: firebase geolocation backend

我正在使用Firebase构建类似于Uber的iOS应用。我的问题是使应用程序可扩展的后端效率。

我需要能够按位置实时组织驾驶员和乘客,以便当用户访问应用程序以请求驾驶员时,只会显示该特定用户区域中的驾驶员。理想情况下,我的数据库结构如下所示:

  • 驱动程序

    • REGION1
      • 驱动1
      • driver 2
  • 车手

    • REGION1
      • rider1
      • rider2

这样,当搜索要在地图视图上显示的驱动程序时,API调用比将所有驱动程序/乘客集中到一个大数据结构中的效率要高得多。

我能想到的唯一方法是使用 CLGeoCoder()并使用反向地理编码在每次加载应用程序时更新数据库中的骑手/驱动程序区域。并且还监控用户退出或进入新区域的时间。有一个更好的方法吗?关于Uber如何仅在特定区域内显示驱动程序,您最好的猜测是什么?

1 个答案:

答案 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