Sortieren Liste der lon - \ - lat-Punkte, beginnen mit dem nächsten
Habe ich Speicherort von GPS (lon_base, lat_base).
Ich habe eine Liste von Orten (lon1, lat1|lon2, lat2|lon3, lat3...)
Diese Liste ist sehr lang und wird rund um die Welt.
Meine Fragen sind:
1. Wie bekomme ich aus dieser Liste nur die lon - \lat, 1 Meile von meinem lon_base\lat_base?
2. Wie Sortiere ich Sie vom nächsten zum am weitesten entfernten?
Vielen Dank im Voraus!
InformationsquelleAutor OkyDokyman | 2011-03-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möchten Sie definieren Ihre eigenen
Comparator
dass, im Allgemeinen, sieht ungefähr so aus:wo
calcDistance()
einfach berechnet den Abstand zwischen den beiden Punkten. Wenn Sie auf Android, ich denke, dass Google Maps eine Funktion, die irgendwo in Ihrer API, die dies für Sie tun.BEARBEITEN : Sie wollen Ihre
calcDistance()
Funktion zu schauen, wie ChrisJ istdistance
Funktion.-tjw
InformationsquelleAutor Travis Webb
Wobei die Liste der Standorte ist eine Liste, die den eigenen Standort, Klasse, nicht das android.Lage.Lage.
InformationsquelleAutor Niels
Können Sie die großkreisentfernung zur Berechnung der Entfernung zwischen zwei Punkten, deren wissen Sie die Breitengrad-Längengrad-Koordinaten. Die Formeln sind sehr einfach zu code:
InformationsquelleAutor ChrisJ
Können Sie followig Annäherung (seit 1 Meile ist viel kleiner als der radius der Erde) berechnen Sie die Entfernungen von der Basis aus:
mit:
phi
= Breite undtheta
= LängeDas Ergebnis wird in Einheiten von 60 nautischen Meilen, wenn
theta
undphi
sind in Grad.Die Ergebnisse werden ziemlich falsch für Punkte, die haben eine Breite, ist sehr Verschieden von Ihrer Basis Breite, aber das spielt keine Rolle, wenn Sie wollen einfach nur wissen, welche Punkte sind etwa 1 Meile von der Basis aus.
Für die meisten Programmiersprachen müssen Sie konvertieren
phi_base
in Bogenmaß (multipliziert mit pi/180), um es zu verwenden fürcos()
.(Achtung: nehmen Sie besonders vorsichtig, wenn Sie Ihre Basis Länge ist sehr nahe an 180° oder -180°, aber wahrscheinlich ist das nicht der Fall 🙂
Den berechneten Entfernungen als Sortierschlüssel zu Sortieren Sie Ihre Punkte.
Wenn Sie um genauer zu sein (wenn Sie z.B. wissen wollen, alle Punkte, dass sind über 2000 Meilen von Ihrer Heimat), als Sie müssen, verwenden Sie die Formel für Großkreisentfernung zu berechnen, die genaue Entfernung zweier Punkte auf einer Kugeloberfläche.
InformationsquelleAutor Curd
Gemäß dieser link
ich machte Arbeitsweise. Die Antwort oben war falsch, weil es nicht konvertieren lat/lng Grad in Bogenmaß.
InformationsquelleAutor Roger Alien