使用地理定位为类似于 Uber 的 iOS 应用组织 back-end

Using geolocation to organize back-end for iOS app similar to Uber

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

我需要能够按位置实时组织 driver 和骑手,这样当用户在应用程序上请求 driver 时,只有 driver将显示该特定用户区域中的 s。所以理想情况下我的数据库结构应该是这样的:

这种方式在搜索要在地图视图上显示的 driver 时,API 调用比将所有 drivers/riders 集中到一个大数据结构中要有效得多。

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

您可以使用 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