2017-09-17 2 views
1

Ich habe eine Idee für einen Teil meiner App, aber ich bin mir nicht sicher, wie ich das am besten logisch umsetzen könnte. Also die Grundidee ist, dass ich 3 Leute war, die die App benutzen, um auf jedem ihrer Bildschirme zu erscheinen. Also öffnen sie die App, eine Kartenansicht erscheint und 3 ihrer Freunde sind auf der Karte in Echtzeit erschienen, wenn sie sich in einem Radius von etwa 5km befinden. Ein besserer Weg, dies zu erklären, ist, sich eine Schule vorzustellen, und jedes Kind hatte die App geöffnet, der Lehrer konnte sehen, wo jedes einzelne Kind in Echtzeit war, da sie alle in einem Umkreis von 5 km waren.Andere Personen auf Kartenansicht in Echtzeit sehen

Mein erster Instinkt war, einfach den aktuellen Standort jedes Benutzers zu erhalten und diese Benutzer lat und long in einer Datenbank zu aktualisieren. Und dann alle 3 Sekunden oder so, jedes Gerät wird jemals Benutzer aus ihrer Datenbank und zeigen Sie eine Markierung ihrer lat und lange auf der Karte. Mein Hauptproblem wäre, wenn 10k Benutzer in einer Datenbank jede Sekunde aktualisiert würden, könnte es abstürzen und viel Stress haben. Wenn es nur Benutzer in einem Umkreis von 5 km zeigt, wäre der beste Weg, wie eine SQL-Abfrage zu tun? so wie get all users from user table where lat is +-5km of device location and same for long Das wäre ein Quadrat, kein Radius, aber das ist das einzige, was mir einfällt.

Ich bin ziemlich neu in der iOS-Entwicklung und ich höre die beste Datenbank ist Firebase? Ich bin mir nicht sicher, ob es besser ist, nur wenn SQL verwenden

Wenn jemand mich auf die Logik dahinter helfen könnte, wäre es sehr

danken Ihnen klar sein :)

Antwort

0

Für diese Art der Abfrage Mit mehreren Klauseln würde ich Ihnen tatsächlich die Verwendung von SQL empfehlen, denn obwohl Firebase ein großartiges Backend ist, erlaubt es noch nicht mehrere Abfragen und es würde in diesem speziellen Anwendungsfall mehr Daten verbrauchen.

Wenn Sie Firebase verwenden möchten, können Sie auf dem Client dennoch filtern (nur Benutzer mit weniger als 5 km Radius anzeigen). Aber das würde erfordern, dass Sie ALLE Benutzer zuerst ziehen und dann (auf dem Client) filtern, um nur diejenigen zu behalten, die weniger als 5 km entfernt sind. Dies würde Sie am Ende zwangsläufig mehr Daten kosten als nötig, aber es ist möglich.

Um die Anzahl von Benutzern zurück begrenzen, Sie noch etwas Filterung tun könnte:

yourDatabaseRef.orderBy("X").equalTo("Y") 

Sie können nach dem anderen Teil Ihrer Frage (die Berechnung aller Punkte, die innerhalb der 5km Umkreis sind) finden Sie viele Antworten auf diese interessante thread. :)

+0

danke für die Info! krank in diesen Thread schauen :) –