Frage

Ich habe eine Anwendung, die die Google Maps API geocodieren Abstände zwischen lat / long-Paaren als eine Möglichkeit der Anzeige von Menschen in der Nähe von Ihnen auf Ihrem Telefon (derzeit Android, auf dem iPhone arbeitet) verwendet. Das Problem ist, dass auch bei einer Testgruppe von 40 Benutzern, wir nach oben von 10 Sekunden nehmen unsere Berechnungen zu tun, und die Ergebnisse zurück an den Benutzer zu senden. Während 10 Sekunden wie eine lange Zeit klingt, ist es nicht wirklich ein Problem so weit wie die Client-Anwendung geht, weil es Aktualisierung der Menschen Standorten nicht ein Echtzeit ist (die Updates alle paar Minuten auftreten). Offensichtlich ist dies ein Problem, aber da wir würden offensichtlich auf zehn bis Rampe lieben oder sogar Hunderttausende von Benutzern. Ich bin gespannt, ob jemand irgendwelche Erfahrungen in diesem Bereich in Bezug muss mit dem Google Maps API für Entfernungen zwischen den Punkten für große Datenmengen Berechnung?

Als Nebenwirkung, die wir verwenden Rails auf dem Server, das ist, wo alle der Standort Berechnung auftreten. Das Telefon (en) ist lediglich die Anzeige der Karten und den Server mit lat / long Koordinaten zu aktualisieren.

War es hilfreich?

Lösung

Werfen Sie einen Blick auf Geokit , es ist ein Ruby Gem und Rails-Plugin zu tun, was Sie wollen, und mehr, ich glaube, Sie mit der Geschwindigkeit sehr zufrieden sein werden und wie gut ausgestattet.

Andere Tipps

Sie brauchen nicht auf die Google Maps API Entfernungen zu berechnen, wenn Sie bereits lat / lon Koordinaten haben. Die Berechnung der Orthodrome können mit Haversine oder Vincenty Formel erfolgen.

Edit: Wenn ich das richtig das Problem zu verstehen (die Suche nach nahe beieinander zu einer bestimmten Stelle in 10.000 Datensätze) Ich kann nur empfehlen, eine geo-Bibliothek für diesen Zweck verwendet wird. Die Berechnung 10k Entfernungen ist eine schlechte Idee, wenn mehr Anfragen in kommen. Sie auf jeden Fall in intelligente Algorithmen für die (ein Quad-Baum scheint praktisch) aussehen sollten.

Sie möchten vielleicht zu berücksichtigen lat lange auf eine lokalisierte äquidistante Projektion Umwandlung bevor irgendwelche Berechnungen zu tun, wenn Sie einen bestimmten Bereich decken. Oder einfacher, wenn die globale Bereiche abdeckt, wandeln die lat lang auf die beiden nächstgelegenen UTM Zonen, Speichern von zwei Sätzen von X-Y-Koordinaten und die beiden Zonen UTM IDs. Dann können Sie Datensätze auswählen, die auf UTM-Zone zunächst übereinstimmt, und führen Sie Ihre Berechnungen gegen diese Teilmenge zweite die projizierten Koordinaten (die schneller sein wird deutlich als Abstand von lat langer Berechnung).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top