Ich habe eine Liste von Restaurants, von denen jedes einen festen Standort hat, der in GeoFire gespeichert ist. Jetzt möchte ich die Restaurants in einem festen Radius des Benutzerstandortes anzeigen. Wie kann ich dies mit GeoFire erreichen? Die Dokumentation hier, , schlägt meistens Lösungen vor, in denen sich Geofire-Schlüssel bewegen, die mit key_entered, key_exited usw. behandelt werden. Ich bin jedoch nicht in der Lage herauszufinden, wie ich auf die Schlüssel in der Nähe zugreifen kann.Liste der Restaurants in der Nähe des Benutzers mit Firebase-GeoFire erreichen
Mein Controller-Code wie folgt aussieht:
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);
Der Schlüssel auf der Konsole gedruckt wird, ist aber nicht beschränkt auf filteredRest Array geschoben.
Ich suche ‚Beispiel für die Verwendung‘ in folgenden Link zu erreichen: https://github.com/firebase/geofire-java#example-usage
Es gibt ähnliche Fragen, aber die meisten von ihnen sind in ios/schnell und die Antworten sind nicht sehr informativ. Ich benutze GeoFire-JavaScript. Jede Hilfe wäre willkommen.
Das Ereignis 'key_entered' wird auch für nicht bewegliche Schlüssel ausgelöst. Es wird "sofort" für alle Tasten im Bereich und dann für jede Taste ausgelöst, die in den Bereich eintritt. Hast du schon etwas probiert? –
Okay, aber kann ich damit auf alle Schlüssel zugreifen, für die das Ereignis ausgelöst wurde? Nicht genau, was eine GeoCallbackRegistration ist, die zurückgegeben wird. – Sagar
Sie müssen eine Sammlung von Schlüsseln erstellen, indem Sie 'key_entered' einhängen. Wenn Sie wissen möchten, wann alle * Initial * -Schlüssel ausgelöst wurden, können Sie das Ereignis 'ready' anhängen: https://github.com/firebase/geofire-js/blob/master/docs/reference.md#geoqueryoneventtype -callback –