Come costruire una bussola con l'iPhone?
-
08-07-2019 - |
Domanda
Dopo alcune ricerche su Google, mi chiedo:
È possibile costruire una bussola (mostrando semplicemente la direzione / direzione) con il sensore GPS dell'iPhone 3G?
Ho il sospetto che ciò sia possibile solo se il dispositivo si sta muovendo.
Tutte le idee sono apprezzate.
Soluzione
Sì, hai ragione, è l'unico modo. Anche se penso che una volta che conosci la direzione, puoi tracciare piccoli movimenti del telefono dai sensori di accelerazione e tracciare la direzione con precisione anche se il movimento originale si interrompe.
Nota: si tratta di informazioni obsolete, corrette fino all'uscita di 3G. Sfortunatamente non posso cancellare la risposta accettata, quindi basta guardare sotto.
Altri suggerimenti
Con l'iPhone e l'iPhone 3G originali, n.
Con l'iPhone 3GS disponibile a giugno 2009, sì. Include un magnetometro che consentirebbe un'applicazione con bussola.
- http://www.apple.com/iphone /iphone-3g-s/maps-compass.html
- http://www.google.com/search?q=iphone%20magnetometer
La Core Location Framework fornisce queste informazioni in CLHeading classe. Puoi controllare se il dispositivo supporta ??a > questa funzione con il tasto magnetometro
.
Come altri hanno già detto, con l'iPhone 3G saresti in grado di dire la direzione del movimento quando il telefono si sta muovendo, ma non saresti in grado di dire l'orientamento del telefono per indicare la direzione all'utente. Certamente l'utente può essere incaricato di orientare il telefono in un certo modo che, combinato con il movimento, potrebbe indicare la direzione con precisione.
Come aggiornamento a questo, l'iPhone 3GS include una bussola digitale reale funzionante disponibile per le app. Rende banale scrivere una simile app.
Vedi la classe CLHeading
e la proprietà magneticHeading
.
Puoi anche ottenere una vera direzione nord, supponendo che il telefono abbia avuto il tempo di localizzarsi geograficamente.
Analizzando le applicazioni disponibili sono giunto alla conclusione che ci sono due modi per creare una bussola per l'attuale iPhone 3G.
- Richiedi lo spostamento del telefono. Usa la differenza nei dati GPS per determinare la direzione.
- Richiede all'utente di puntare il telefono verso il sole. Utilizzare le informazioni GPS e temporali per determinare le indicazioni.
Devi solo implementare la funzionalità di gestione della posizione per trovare la direzione esatta verso cui punta il tuo iPhone.
Quindi, puoi controllare questo:
CLLocationManager * locationManager; [locationManager startUpdatingHeading];
E ogni volta che chiami startUpdatingHeading () chiamerà " - (nulla) locationManager: (CLLocationManager *) manager didUpdateHeading: (CLHeading *) newHeading " metodo che è necessario sovrascrivere dal gestore della posizione.
Ed è qui che puoi trovare la direzione verso cui punta iPhone 3GS newHeading.magneticHeading o newHeading.trueHeading.
Sorprenderai di poter ottenere esattamente la stessa direzione che ti dà la bussola magnetica.
La bussola mostrerà solo la direzione in cui ti stai muovendo. Non ti dirà la direzione in cui è posizionato l'iPhone. Quindi anche l'uso dell'accelerometro per tracciare che l'iPhone ha girato / spostato non ti consentirà necessariamente di puntare a nord sul display.
(Cioè non saprai se si sta muovendo lateralmente o se stiamo tenendo l'iPhone capovolto o altro. Saprai semplicemente dove ti stai muovendo ...)
EDIT dicembre 2010: Da quando è stato scritto questo post originale, l'iPhone 3GS (lanciato nell'estate '09) e i modelli più recenti hanno una bussola elettronica. Questa bussola può mostrare la direzione corretta quando senza muoversi ... (Ciò significa che la bussola ora è in grado di puntare a nord indipendentemente dalla direzione in cui l'iPhone è tenuto o si sta muovendo.)
Penso che tu abbia ragione con il tuo sospetto, una posizione GPS è un singolo punto senza alcuna informazione di direzione. Per determinare una direzione sono necessari due punti per creare un vettore di direzione. I sistemi di navigazione per auto funzionano allo stesso modo. Possono mostrare un vettore di direzione solo se l'auto si sta muovendo.
Se si implementa un orologio analogico, è possibile utilizzare le istruzioni seguenti per sovrapporre un quadrante della bussola.
Questo potrebbe essere usato per 'calibrare' la bussola e usare l'accelerometro per puntare verso nord quando il telefono si sposta.
Ovviamente questo non è super preciso ... "soluzione a bassa tecnologia a un problema di alta tecnologia"
(istruzioni tratte da http://www.qwerty.co.za )
Nell'emisfero nord posiziona l'orologio su un terreno pianeggiante, punta la lancetta delle ore in direzione del sole. La linea Nord-Sud è di nuovo la linea che divide l'angolo tra la lancetta delle ore e la linea delle 12 a metà.
Nell'emisfero australe , posiziona l'orologio su un terreno pianeggiante, punta la figura 12 verso il sole. La linea nord-sud è la linea che divide l'angolo tra la lancetta delle ore e la linea delle 12 in punto.
Come nota a margine, gli accelerometri nell'iPhone non tengono traccia delle rotazioni solo delle traduzioni, quindi non è possibile eseguire il rilevamento inerziale a 6 assi della posizione e della direzione.