0

ユーザーが通りで目撃したイベントの場所を投稿できるアプリをSwiftで構築しています。各イベントの有効期間は45分で、そのしきい値を超えるとマップに表示されません。

私はこのように Json ツリーを構築しました (場所とイベントは同じ ID を共有します - ここでは表されません):

firebaseapp {
  locations {
    g
    l {
      0: "latitude"
      1: "longitude"
    }
  }
  events {
    timestamp: "UTC timestamp"
    description: "my description"
    user: "id of user"
  }
  users {
    // User data
  }
}

画面に表示された地域に対応するすべての場所を照会してから、45 分以内に発生したイベントを照会します。私はこれをこのようにします:

regionQuery = geoFire.queryWithRegion(mapView.region)
regionQuery.observeEventType(.KeyEntered, withBlock: { (key: String!, location: CLLocation!) in

// I query my events based on the key here

})

この方法の問題点は、特定の地域について、過去に発生したイベントのすべての場所 (LOT になる可能性があります) をクエリし、次に従来の Firebase クエリを使用して 45 分以内に発生したイベントをクエリすることです。 .

私の問題に対するより良い解決策はありますか?ユーザーがマップを移動するたびに、表示されている地域のすべての場所が読み込まれると、帯域幅のしきい値をすぐに超えてしまうのではないかと心配しています...

4

1 に答える 1

3

「最近の場所」を「歴史的な場所」から分割するだけです。

recent_locations
   g
      l {
        0: "latitude"
        1: "longitude"
      }
historic_locations
   g
      l {
        0: "latitude"
        1: "longitude"
      }

最近の場所または過去の場所に対して地理クエリを実行できるようになりました。

于 2016-04-22T20:32:39.417 に答える