2

GeoFire に保存されている固定の場所を持つレストランのリストがあります。ここで、ユーザーの位置から一定の半径内にあるレストランを表示したいと考えています。GeoFire を使用してこれを達成するにはどうすればよいですか。ここのドキュメントhttps://github.com/firebase/geofire-js/blob/master/docs/reference.md#geofiresetkeyorlocations-locationは主に、key_entered、key_exited などを使用して処理される geofire の「キー」が移動するソリューションを提案しています。 .しかし、近くにあるキーにアクセスする方法がわかりません。

私のコントローラコードは次のようになります:

var ref = firebase.database().ref();
var geoFire = new GeoFire(ref.child("geofire"));
var posOptions = {timeout: 10000, enableHighAccuracy: false};
$cordovaGeolocation.getCurrentPosition(posOptions).then(function (position) {
$scope.rest= [];
$scope.filteredRest = [];
var geoQuery = geoFire.query({
  center: [position.coords.latitude,  position.coords.longitude],
  radius: 15
});
geoQuery.on("key_entered", function(key, location, distance) {
  console.log(key);
  $scope.filteredRest.push(key);
});
geoQuery.on("ready", function() {
  geoQuery.cancel();
});
console.log($scope.filteredRest);

キーはコンソールに出力されますが、filteredRest 配列にはプッシュされません。

次のリンクで「使用例」を達成しようとしています: https://github.com/firebase/geofire-java#example-usage

同様の質問がありますが、それらのほとんどは ios/swift にあり、回答はあまり有益ではありません。GeoFire-JavaScript を使用しています。どんな助けでも大歓迎です。

4

1 に答える 1

4

すべての初期キーが同期されたときに処理するには、コードをreadyハンドラーに入れます。たとえば、すべての初期キーを出力したいとします。

var ref = firebase.database().ref();
var geoFire = new GeoFire(ref.child("geofire"));
var posOptions = {timeout: 10000, enableHighAccuracy: false};
$cordovaGeolocation.getCurrentPosition(posOptions).then(function (position) {
$scope.rest= [];
$scope.filteredRest = [];
var geoQuery = geoFire.query({
  center: [position.coords.latitude,  position.coords.longitude],
  radius: 15
});
geoQuery.on("key_entered", function(key, location, distance) {
  $scope.filteredRest.push(key);
});
geoQuery.on("ready", function() {
  geoQuery.cancel();
  console.log($scope.filteredRest);
});
于 2016-07-27T04:18:57.593 に答える