Hey, ich habe gerade eine Google-Karte in Echtzeit mit Firebase und GeoFire erstellt. GeoFire ist wirklich cool und einfach zu bedienen. Sie können Abfragen mit lon lat und radius durchführen. Es gibt einen Schlüssel zurück, mit dem Sie Ihre Firebase-Datenbank abfragen können. Sie legen beim Erstellen des GeoFire-Objekts den Schlüssel so fest, wie Sie möchten. Es ist normalerweise eine Referenz, die Sie verwenden können, um das Objekt zu erhalten, das dieser Entfernung zugeordnet ist. Hier
ist ein Link zu geoFire: https://github.com/firebase/geofire-js
Hier ist ein Beispiel Anwendungsfall:
Sie ein lon lat haben, dass Sie Navigator wurde mit:
var lon = '123.1232';
var lat = '-123.756';
var user = {
name: 'test user',
longitude: lon,
latitude: lat
}
usersRef.push(user).then(function(response) {
var key = response.key;
var coords = [lon, lat];
geoFire.set(key, coords, function(success){
console.log('User and geofire object has been created');
});
})
Jetzt können Sie Abfrage für den Benutzer mit:
// Set your current lon lat and radius
var geoQuery = geoFire.query({
center: [latitude, longitude],
radius: radiusKm
});
geoQuery.on('key_entered', function(key, location, distance) {
// You can now get the user using the key
var user = firebaseRefUrl + '/' + key;
// Here you can create an array of users that you can bind to a scope in the controller
});
Wenn Sie verwenden Google Maps. Ich empfehle Ihnen eckige Google Maps. Es ist eine wirklich coole Google Maps-Direktive, die eine Reihe von Markierungen und Kreisen aufnimmt. Wenn sich also $ scope.markers oder $ scope.circles im Controller ändern, wird es automatisch auf die Karte ohne irgendeinen unordentlichen Code angewendet. Sie haben eine sehr gute Dokumentation.
Hier ist ein Link: http://angular-ui.github.io/angular-google-maps/