2009-05-07 7 views
6

Después de algunas búsquedas en Google, me pregunto:¿Cómo construir una brújula con el iPhone?

¿Es posible construir un compás (simple que muestra el rumbo/dirección) con sensor de GPS del iPhone 3G?

Tengo la sospecha de que esto solo es posible si el dispositivo se está moviendo.

Se aprecian todas las ideas.

+1

Estoy bastante seguro de que acabo de ver eso en un comercial de TV para el iPhone ... –

+2

Sí, solo es posible si el dispositivo se mueve. Por ejemplo, compare los modelos Garmin 60C y 60Csx. Este último tiene una brújula electrónica incorporada. Sin embargo, ¿el iPhone no tiene integrados los sensores intertiales de movimiento/giro? La combinación de entradas de ese y sesor GPS puede crear (al menos) una brújula aproximada (seguro que todavía habría una necesidad de mover el dispositivo un poco como parte de la "inicialización" de la brújula). –

+0

Tenga en cuenta que incluso la brújula electrónica en el Garmin 60Csx es terriblemente inexacta en comparación con una brújula de aguja magnética de $ 25. Todavía tengo que encontrarme con una brújula electrónica que sea adecuada para la navegación real: lo mejor que he visto solo puede confiarse en que te diga la diferencia entre NE y N. – user57368

Respuesta

4

Sí, tienes razón, esa es la única manera. Aunque creo que una vez que conoces la dirección, puedes rastrear pequeños movimientos del teléfono desde los sensores de aceleración y dibujar la dirección con precisión, incluso si el movimiento original se detiene.

Nota: Esta es la información desactualizada, era correcta hasta que salió 3Gs. Lamentablemente, no puedo eliminar la respuesta aceptada, así que simplemente mira debajo.

+0

De acuerdo ... mira mi comentario anterior :) –

1

Creo que su derecha con su sospecha, una posición GPS es un punto único sin información de dirección. Para determinar una dirección necesita dos puntos para crear un vector de dirección. Los sistemas de navegación para automóviles funcionan de la misma manera. Solo pueden mostrar un vector de dirección si el automóvil se está moviendo.

2

Al escanear las aplicaciones disponibles, he llegado a la conclusión de que hay dos maneras de hacer una brújula para el iPhone 3G actual.

  1. Requiere que el teléfono se mueva. Use la diferencia en los datos del GPS para determinar la dirección.
  2. Exige que el usuario apunte el teléfono hacia el sol. Use el GPS y la información del tiempo para determinar las direcciones.
+2

Solo don Trate de encontrar el camino a casa por la noche. ;-) –

+1

Puede usar estrellas en su lugar :) – vava

2

La brújula solo mostrará la dirección en que se está moviendo. No le indicará en qué dirección se encuentra el iPhone. Por lo tanto, incluso si utiliza el acelerómetro para rastrear que el iPhone se ha girado/movido, no necesariamente le permitirá apuntar hacia el norte en la pantalla.

(Ie. Usted no sabrá si su movimiento hacia los lados o si estamos sosteniendo el iPhone boca abajo ni nada. Sólo te va a saber dónde se está moviendo ...)

EDITAR diciembre de 2010: Desde que se escribió esta publicación original, el iPhone 3GS (lanzado en verano '09) y los modelos más nuevos tienen una brújula electrónica. Esta brújula puede mostrar la dirección correcta cuando no se mueve ... (Esto significa que la brújula ahora puede apuntar al norte independientemente de la dirección en que se sostenga o se mueva el iPhone).

9

Con el iPhone y el iPhone 3G originales , no.

Con el iPhone 3GS disponible en junio de 2009, sí. Incluye un magnetómetro que permitiría una aplicación de brújula.

El Core Location Framework proporciona esta información en la clase CLHeading. Puede verificar si el device supports esta función con la clave magnetometer.

Como han dicho otros, con el iPhone 3G sería capaz de indicar la dirección de movimiento cuando el teléfono se está moviendo, pero no sería capaz de indicar la orientación del teléfono para indicarle la dirección al usuario. Ciertamente, se le puede indicar al usuario que oriente el teléfono de cierta manera, lo que combinado con el movimiento podría indicar una dirección precisa.

1

Si implementa un reloj analógico, puede utilizar las instrucciones a continuación para superponer un dial de la brújula.

Esto se podría utilizar para 'calibrar' la brújula y usar el acelerómetro para señalar hacia el norte cuando se mueve el teléfono.

Obviamente, esto no es muy precisa ... "solución de baja tecnología a un alto problema de la tecnología"

(instrucción tomado de http://www.qwerty.co.za)

En el norte lugar hemisferio el reloj sobre una pieza de nivel de suelo, señalar la manecilla de las horas en la dirección del sol. La línea Norte-Sur es nuevamente la línea que divide el ángulo entre la manecilla de la hora y la línea de las 12 en punto por la mitad.

En el hemisferio sur, coloque el reloj sobre una superficie plana, apunte la figura 12 hacia el sol. La línea Norte-Sur es la línea que divide el ángulo entre la manecilla de la hora y la línea de las 12 en punto por la mitad.

+1

¿No es necesario colocarlo en un terreno llano cuando se encuentra en el hemisferio norte? ;) –

+0

Er ... eso es un quasisundial, ¿no? –

1

Como nota al margen, los acelerómetros en el iPhone no rastrean solo las rotaciones de las traducciones, por lo que no puede realizar el seguimiento inercial de 6 ejes de la posición y dirección.

4

Como una actualización de esto, el iPhone 3GS incluye una brújula digital que funciona y está disponible para las aplicaciones. Hace que escribir una aplicación así sea trivial.

Consulte la clase CLHeading y la propiedad magneticHeading.

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

También puede obtener un rumbo verdadero norte, en el supuesto de que el teléfono ha tenido tiempo para situarse geográficamente.

+0

Actualización interesante. Gracias... – Stefan

2

Solo necesita implementar la funcionalidad de administrador de ubicación para encontrar la dirección exacta a la que apunta su iPhone.

Por lo tanto, se puede comprobar esto:

CLLocationManager * locationManager; [locationManager startUpdatingHeading];

Y cada vez que llame startUpdatingHeading() llamará "- (void) locationManager: (CLHeading *) newHeading: (CLLocationManager *) gerente didUpdateHeading" método que se debe redefinir desde el administrador de ubicación.

Y eso es todo lo que puede encontrar la dirección en la que el iPhone 3GS apunta hacia newHeading.magneticHeading o newHeading.trueHeading.

Sorprenderá que puede obtener exactamente la misma dirección que la brújula magnética le da.

Cuestiones relacionadas