2009-09-08 9 views
8

Estoy desarrollando aplicaciones de GPS. ¿Sabes cómo detectar la velocidad del dispositivo móvil?CLUbicación velocidad

En realidad, necesito para detectar la velocidad de cada 2 segundos.

didUpdateToLocation método se llama cuando se cambió la ubicación.

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation 

Pero creo que este método no es adecuado para mi problema.

Por lo tanto, ¿Es necesario comprobar la velocidad de [CLLocationManager location] en 2 segundos?

Cualquier sugerencia?

Gracias de antemano.

Respuesta

26

¿Y el siguiente código que funciona a partir del método delegado. alternativa, si se quería sondear, a continuación, mantener su ubicación anterior y comprobar la distancia cambiado desde el último sondeo y utilizar el método manual (también se muestra a continuación) para calcular la velocidad.

velocidad se calcula/proporcionado en m/s así multiplicar por 3,6 para kmph o 2,23693629 para mph.

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    //simply get the speed provided by the phone from newLocation 
    double gpsSpeed = newLocation.speed; 

    // alternative manual method 
    if(oldLocation != nil) 
    { 
     CLLocationDistance distanceChange = [newLocation getDistanceFrom:oldLocation]; 
     NSTimeInterval sinceLastUpdate = [newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp]; 
     double calculatedSpeed = distanceChange/sinceLastUpdate; 

    } 
} 
+5

Fuera de interés que es la mejor de las dos opciones (en términos de precisión)? –

+1

getDistanceFrom se depreció. Reemplazar CLLocationDistance distanceChange = [newLocation getDistanceFrom: oldLocation]; con CLLocationDistance distanceChange = [newLocation distanceFromLocation: oldLocation]; – Wes

0

Puede realmente sólo utilizar el método delegado que ha sugerido en su pregunta.

Incluso si se accede a la [lugar CLLocationManager] cada 2 segundos, usted sólo recibirá la coordenada última vez que recibió en el método delegado anteriormente.

¿Por qué la necesidad de sondeo de cada dos segundos? El iPhone puede actualizar sus coordenadas en menos tiempo en algunos casos.

HTH