Berechne die Kompassrichtung / Richtung zum Standort in Android
Möchte ich die Anzeige ein Pfeil an meinem Standort auf einer google-Karte anzeigen, zeigt meine Richtung in Bezug auf einen Zielort (statt Norden).
a) habe ich berechnet Norden kommend über die sensor Werte vom magnetometer und Beschleunigungsmesser. Ich weiß, das ist richtig, denn es deckt sich mit dem, der Kompass benutzt, die auf der Google-Karte anzeigen.
b) habe ich berechnet, das erste Lager von meinem Standort, um den Ziel-Speicherort mit myLocation.bearingTo(destLocation);
Mir fehlt der Letzte Schritt, aus diesen zwei Werten (a & b) welche Formel muss ich verwenden, um die Richtung, in die das Telefon gerichtet ist, relativ zu dem Zielort?
Freuen uns über jede Hilfe für einen verwirrten Geist!
InformationsquelleAutor der Frage Damian | 2010-11-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, ich habe dies aus. Für jemand anderes zu versuchen, dies zu tun, müssen Sie:
a) überschrift: deine überschrift von der hardware Kompass. Dieser wird in Grad östlich von magnetische north
b) Lager: die Lager von Ihrem Standort aus zum Zielort. Dieser wird in Grad östlich von wahr Norden.
c) Deklination: der Unterschied zwischen true north und magnetischen Nordpol
Die überschrift, der zurückgegeben wird, von dem magnetometer + accelermometer ist in Grad östlich von true (magnetisch) Nord (-180 bis +180), so dass Sie brauchen, um den Unterschied zwischen dem Norden und dem magnetischen Norden für Ihre Lage. Dieser Unterschied ist variabel, je nachdem, wo Sie auf der Erde. Sie erhalten können, indem Sie GeomagneticField Klasse.
Bewaffnet mit diesen berechnen Sie den Winkel, den Pfeil zu zeichnen, der auf deiner Karte zu zeigen, wo Sie stehen, in Bezug auf Ihre Ziel-Objekt, sondern als echte Norden.
Ersten passen Sie Ihre überschrift mit Deklination:
Zweitens müssen Sie, um den offset in die Richtung, in die das Handy vor (überschrift) von dem Ziel, anstatt den wahren Norden. Dies ist der Teil, den ich stecken geblieben. Die überschrift zurückgegebenen Wert vom Kompass gibt Ihnen einen Wert, der beschreibt, wo die magnetischen Norden (in Grad östlich von der Nordrichtung) in Bezug auf, wo sich das Telefon zeigen. So z.B. wenn der Wert -10 wissen Sie, dass der magnetische Norden ist um 10 Grad nach Links. Die Lager gibt man den Winkel des Ziels in Grad östlich von der Nordrichtung. So, nachdem Sie haben entschädigt für die Deklination können Sie mithilfe der folgenden Formel das gewünschte Ergebnis zu erhalten:
Werden Sie dann wollen, konvertieren von Grad östlich von true north (-180 bis +180) in den normalen Grad (0 bis 360):
InformationsquelleAutor der Antwort Damian
@Damian - Die Idee ist sehr gut und ich Stimme mit der Antwort, aber wenn ich Ihren code benutzt, ich hatte falsche Werte, also schrieb ich dies auf meine eigene (jemand erzählt hat, das gleiche in den Kommentaren). Zählen Sie die überschrift mit der Deklination ist gut, denke ich, aber später habe ich benutzt sowas:
statt Damian code:
und ändern von -180 bis 180 für 0 bis 360:
dann, wenn Sie wollen, drehen Sie den Pfeil können Sie verwenden, code wie diesen:
wo
arrowView
istImageView
mit Pfeil Bild und 100f Parameter inpostRotate
ist pivX und pivY).Ich hoffe, dass ich jemandem helfen.
InformationsquelleAutor der Antwort CookieMonssster
Ich bin kein Experte in map-reading /- navigation und so, aber sicherlich 'Richtungen' sind absolute und nicht relative oder in der Realität, Sie sind relativ zur N-oder S die sich in der festen/absoluten.
Beispiel: nehmen wir an, eine imaginäre Linie, die zwischen Ihnen und Ihrem Ziel entspricht, mit 'absolut' SE (a Lagerung 135 Grad relativ zur magnetischen N). Nehmen wir nun an Ihr Telefon zeigt NW - zieht man eine imaginäre Linie von einem imaginären Objekt am Horizont, um Ihrem Ziel, wird es passieren, die durch Ihre Lage und haben einen Winkel von 180 Grad. Jetzt 180 Grad in den Sinn, der Kompass bezieht sich eigentlich auf S, sondern das Ziel ist nicht 'wegen S' des imaginären Objekt Ihr Handy gerichtet ist und darüber hinaus, wenn Sie reiste zu jener imaginäre Punkt, das Ziel wäre immer noch SE, wo Sie sich bewegt.
In der Realität, die 180-Grad-Linie tatsächlich sagt Sie das Ziel 'hinter Ihnen' relativ zu dem Weg, das Handy (und vermutlich auch Sie) zeigen.
Gesagt haben, dass, jedoch, wenn die Berechnung der Winkel einer Linie, die von der imaginären Punkt auf Ihr Ziel (die durch Ihre Lage), um zu zeichnen ein Zeiger auf Ihr Ziel, was Sie wollen...einfach abziehen, die (absolute) angesichts des Ziels von der absoluten Richtung der imaginären Objekt und ignorieren ein negation (falls vorhanden). z.B., NW - SE 315 - 135 = 180, so ziehen Sie den Mauszeiger auf den unteren Rand des Bildschirms erscheint die Meldung 'hinter Ihnen'.
EDIT: ich habe in Mathe etwas falsch...subtrahieren Sie die kleinere der Lager von der größeren subtrahieren Sie dann das Ergebnis von 360 zu bekommen, der Winkel, in dem Sie zum zeichnen des Mauszeigers auf dem Bildschirm.
InformationsquelleAutor der Antwort Squonk
In dieser einen Pfeil auf dem Kompass zeigt die Richtung vom Standort zum Kaaba(Zielort)
können Sie einfach verwenden bearingTo auf diese Weise.Lager, um Ihnen die direkte Winkel vom Standort zum Zielort
bearingTo geben Sie einen Bereich von -180 bis 180, das wird verwechseln, die Dinge ein wenig. Wir konvertieren zu müssen, diesen Wert in einem Bereich von 0 bis 360 zu Holen Sie sich die richtige Drehung.
Dies ist eine Tabelle von dem, was wir wirklich wollen, im Vergleich zu dem, was bearingTo gibt uns
also fügen wir diesen code nach bearTo
müssen Sie implementiert das SensorEventListener und seine Funktionen(onSensorChanged,onAcurracyChabge) und schreiben Sie den code in onSensorChanged
Vollständige code ist hier für die Richtung der Qibla Kompass
xml-code ist hier
InformationsquelleAutor der Antwort Muhammad Kashif Arif
Wenn Sie auf der gleichen Zeitzone
Konvertieren, GPS, UTM -
http://www.ibm.com/developerworks/java/library/j-coordconvert/
http://stackoverflow.com/questions/176137/java-convert-lat-lon-to-utm
UTM-Koordinaten erhalten Sie ein simples X-Y-2D
Berechnen Sie den Winkel zwischen den beiden UTM-Standorte
http://forums.groundspeak.com/GC/index.php?showtopic=146917
Dieser gibt die Richtung wie wenn du auf der Suche north
Also, was du drehen Verwandte tun, Norden nur subtrahieren dieser Winkel
Wenn beide point-haben ein UTM-45º Grad-Winkel und Sie sind 5º östlich von Norden, ist Ihr Pfeil, zeigen Sie auf 40 ° Nord
InformationsquelleAutor der Antwort Pedro
Hier ist, wie ich es getan haben:
InformationsquelleAutor der Antwort Sileria
Ich weiß, das ist ein wenig alt, aber für den sake von Leuten wie mir von google die nicht finden, eine vollständige Antwort hier. Hier sind einige Auszüge aus meiner app, die die Pfeile im inneren eine custom listview....
Ich bereit zu Wetten, dass es vereinfacht werden könnte, aber es funktioniert!
LastKnownLocation verwendet wurde, da dieser code war von new SimpleCursorAdapter.ViewBinder()
onLocationChanged enthält einen call-to notifyDataSetChanged();
code auch aus new SimpleCursorAdapter.ViewBinder() , Bild-Drehung und listrow Farben (nur in einem einzigen columnIndex wohlgemerkt)...
Falls Sie sich Wundern, ich habe den Magnetsensor Dramen, war nicht der Mühe Wert, in meinem Fall.
Ich hoffe, jemand findet diese als nützlich, da ich in der Regel tun, wenn google bringt mich auf stackoverflow!
InformationsquelleAutor der Antwort dno
Terminologie : Der Unterschied zwischen TRUE north und Magnetischen Nordpol, der bekannt ist als "variation", nicht der Deklination. Der Unterschied zwischen dem, was der Kompass liest und die magnetische überschrift ist bekannt als "Abweichung" und variiert mit der überschrift. Eine Kompass-swing-Gerät identifiziert Fehler und ermöglicht Korrekturen angewendet werden, wenn das Gerät über Korrektur eingebaut. Ein magnetischer Kompass eine Abweichung Karte, die beschreibt, Gerät Fehler, die auf jeder Position.
Deklination : Ein Begriff, der in der Astro-navigation : Deklination ist wie die Breite. Es wird berichtet, wie weit ein Stern ist vom Himmelsäquator. Finden Sie die Deklination eines Sterns Folgen eine Stunde Kreis "gerade nach unten", die von dem Stern auf dem Himmelsäquator. Die Winkel, die von dem Stern auf dem Himmelsäquator entlang der Stunden-Kreis ist der Stern der Deklination.
InformationsquelleAutor der Antwort Simon
Ich bin dabei, es herauszufinden jetzt, aber es scheint, als ob die Mathematik hängt davon ab, wo Sie und Ihre Gegner sind auf der Erde in Bezug auf den geografischen und magnetischen Nordpol. Zum Beispiel:
Siehe Sensor.TYPE_ORIENTATION für Azimut.
Sehen getDeclination() für die Deklination
Dieser übernimmt die Deklination negativ ist (westlich von true north) und theirBearing > yourBearing.
Wenn die Abweichung positiv ist, und yourBearing > theirBearing eine weitere option:
Ich noch nicht getestet, voll aber das spielen mit den Winkeln auf dem Papier hat mich hier.
InformationsquelleAutor der Antwort tricknology
Dies ist der beste Weg, um zu erkennen, Lager von Location-Objekts auf der Google-Anzeigen:->
InformationsquelleAutor der Antwort Ramkailash
Hier ist der code für die Berechnung der Drehwinkel zwischen zwei Punkten:
Aufruf für die Funktion:
InformationsquelleAutor der Antwort APP
Die Formel geben, die das Lager über die Koordinaten des start -, Endpunkt und sehen
Den folgenden code, geben Sie die Peilung (Winkel zwischen 0-360)
}
Diese funktioniert für mich, hoffe, es wird anderen auch
InformationsquelleAutor der Antwort K K