2009-05-07 4 views
6

Nach einiger Suche auf Google, frage ich mich:Wie baue ich einen Kompass mit dem iPhone?

Ist es möglich, einen Kompass (einfach zeigt die Richtung/Richtung) mit der iPhone 3G GPS-Sensor zu bauen?

Ich habe den Verdacht, dass dies nur möglich ist, wenn sich das Gerät bewegt.

Irgendwelche Ideen werden geschätzt.

+1

Ich bin mir ziemlich sicher, dass ich das gerade auf einem TV-Werbespot für das iPhone gesehen habe ... –

+2

Ja, das ist nur möglich, wenn sich das Gerät bewegt. Vergleichen Sie zum Beispiel die Modelle Garmin 60C und 60Csx. Letzteres hat einen eingebauten elektronischen Kompass. Jedoch, hat nicht iPhone intertial Bewegungs-/Umdrehungssensoren eingebaut? Die Kombination von Eingaben von diesem und GPS-Sesor kann (zumindest) einen ungefähren Kompass erzeugen (sicher würde es immer noch notwendig sein, das Gerät ein wenig als Teil der Kompass- "Initialisierung" zu bewegen). –

+0

Beachten Sie, dass sogar der elektronische Kompass des Garmin 60Csx im Vergleich zu einem ordentlichen $ 25 magnetischen Nadelkompass furchtbar ungenau ist. Ich habe noch einen elektronischen Kompass zu treffen, der für die tatsächliche Navigation geeignet ist - das Beste, was ich gesehen habe, kann nur vertraut werden, um Ihnen den Unterschied zwischen NE und N. – user57368

Antwort

4

Ja, Sie haben Recht, das ist der einzige Weg. Obwohl ich denke, sobald Sie die Richtung kennen, können Sie kleine Bewegungen des Telefons von den Beschleunigungssensoren verfolgen und die Richtung genau zeichnen, selbst wenn die ursprüngliche Bewegung aufhört.

Hinweis: Dies ist veraltete Informationen, es war richtig, bis 3Gs herauskam. Leider kann ich akzeptierte Antworten nicht löschen.

+0

Agree ... siehe meinen Kommentar oben :) –

1

Ich denke, Ihr Recht mit Ihrem Verdacht, eine GPS-Position ist ein einziger Punkt ohne Richtungsinformationen. Um eine Richtung zu bestimmen, benötigen Sie zwei Punkte, um einen Richtungsvektor zu erstellen. Fahrzeugnavigationssysteme funktionieren auf die gleiche Weise. Sie können nur einen Richtungsvektor anzeigen, wenn sich das Auto bewegt.

2

Durch Scannen der verfügbaren Anwendungen bin ich zu dem Schluss gekommen, dass es zwei Möglichkeiten gibt, einen Kompass für das aktuelle iPhone 3G zu erstellen.

  1. Das Telefon muss sich bewegen. Verwenden Sie den Unterschied in GPS-Daten, um die Richtung zu bestimmen.
  2. Verlangen Sie, dass der Benutzer das Telefon auf die Sonne richtet. Verwenden Sie GPS und Zeitinformationen, um Richtungen zu bestimmen.
+2

Just don Versuche nicht, nachts nach Hause zu finden. ;-) –

+1

Er kann stattdessen Sterne verwenden :) – vava

2

Der Kompass zeigt nur die Richtung an, in die Sie sich bewegen. Es zeigt Ihnen nicht die Richtung an, in die das iPhone positioniert ist. Wenn Sie also den Beschleunigungsmesser verwenden, um zu verfolgen, dass sich das iPhone gedreht/bewegt hat, können Sie nicht unbedingt auf dem Display nach Norden zeigen.

(Ie. Sie werden nicht wissen, ob seine Seitwärtsbewegung oder, wenn wir das iPhone Kopf oder etwas Hand halten. Sie müssen nur wissen, wo Sie sich bewegen ...)

EDIT Dezember 2010: Seit dieser ursprünglichen Post geschrieben wurde, haben das iPhone 3GS (startete Sommer '09) und neuere Modelle einen elektronischen Kompass. Dieser Kompass kann die richtige Richtung anzeigen, wenn er sich nicht bewegt ... (Dies bedeutet, dass der Kompass jetzt nach Norden zeigen kann, unabhängig von der Richtung, in die das iPhone geführt wird oder sich bewegt.)

9

Mit dem Original iPhone und iPhone 3G , Nein.

Mit dem iPhone 3GS verfügbar Juni 2009, ja. Es enthält ein Magnetometer, das eine Kompassanwendung ermöglicht.

The Core Location Framework stellt diese Informationen in der CLHeading Klasse. Sie können überprüfen, ob die device supports diese Funktion mit dem magnetometer Schlüssel.Wie andere schon gesagt haben, könnten Sie mit dem iPhone 3G die Richtung der Bewegung angeben, wenn sich das Telefon bewegt, aber Sie könnten die Ausrichtung des Telefons nicht erkennen, um dem Benutzer die Richtung anzuzeigen. Sicherlich kann der Benutzer angewiesen werden, das Telefon auf eine bestimmte Weise auszurichten, die zusammen mit der Bewegung die Richtung genau angeben könnte.

1

Wenn Sie eine analoge Uhr implementieren, können Sie die folgenden Anweisungen verwenden, um eine Kompassscheibe zu überlagern.

Dies könnte verwendet werden, um den Kompass zu "kalibrieren" und verwenden Sie den Beschleunigungsmesser weiterhin nach Norden, wenn das Telefon bewegt.

Natürlich ist dies nicht super präzise ... "Low-Tech-Lösung für ein High-Tech-Problem"

(Anweisung von http://www.qwerty.co.za genommen)

In der nördlichen Hemisphäre Ort die Uhr auf einem ebenen Stück von Boden, zeigen Sie den Stundenzeiger in Richtung der Sonne. Die Nord-Süd-Linie ist wiederum die Linie, die den Winkel zwischen dem Stundenzeiger und der 12-Uhr-Linie in zwei Hälften teilt.

In der südlichen Hemisphäre, legen Sie die Uhr auf ein ebenes Stück Boden, zeigen Sie die Abbildung 12 in Richtung der Sonne. Die Nord-Süd-Linie ist die Linie, die den Winkel zwischen dem Stundenzeiger und der 12-Uhr-Linie halbiert.

+1

Kein Platz auf der Nordhalbkugel auf ebenem Boden? ;) –

+0

Er ... das ist ein Quasisundial, oder? –

1

Als eine Nebenbemerkung verfolgen die Beschleunigungsmesser im Iphone keine Umdrehungen nur Übersetzungen, so dass Sie nicht richtige 6-Achsen-Trägheitsverfolgung von Position und Richtung tun können.

4

Als ein Update zu diesem, enthält das iPhone 3GS einen tatsächlichen, funktionierenden digitalen Kompass, der für Apps verfügbar ist. Es macht das Schreiben einer solchen App trivial.

Siehe die CLHeading Klasse und die magneticHeading Eigenschaft.

http://developer.apple.com/iphone/library/documentation/CoreLocation/Reference/CLHeading_Class/Reference/Reference.html

Sie können auch eine wahre Richtung Norden erhalten, vorausgesetzt, dass das Telefon die Zeit selbst geografisch zu lokalisieren hatte.

+0

Cool update. Vielen Dank... – Stefan

2

Sie müssen nur die Location Manager-Funktionalität implementieren, um die genaue Richtung zu finden, in die Ihr iPhone zeigt.

So können Sie dies überprüfen:

CLLocationManager * Locationmanager; [locationManager startUpdatingHeading];

Und wann immer Sie startUpdatingHeading() aufrufen, wird es nennen "- (void) Locationmanager: (CLLocationManager *) Manager didUpdateHeading: (CLHeading *) newHeading" Methode, die Sie benötigen, von Location-Manager außer Kraft zu setzen.

Und das ist es können Sie die Richtung finden, in der iPhone 3GS von newHeading.magneticHeading oder newHeading.trueHeading zeigt.

Sie werden überraschen, dass Sie genau die gleiche Richtung bekommen können, was der magnetische Kompass Ihnen gibt.