when usage requestwheninuseauthorization manager description corelocation ios iphone geolocation mapkit core-location

ios - requestwheninuseauthorization - location when in use usage description



CLLocation que devuelve velocidad negativa (1)

Usualmente, obtienes altitud y velocidad negativas si el mecanismo de detección de ubicación usado no lo admite. Por ejemplo, cuando se usa Wi-Fi o triangulación celular. ¿Estás seguro de que estás recibiendo actualizaciones de GPS, entonces estás probando bajo el cielo libre? Incluso entonces, aún recibirás actualizaciones de WiFi y ubicación de la torre celular, por lo que debes filtrarlas.

La precisión horizontal de 65 m es típica para las actualizaciones de ubicación Wi-Fi.

Estoy comenzando una nueva aplicación que utiliza el coreLocation y los marcos de mapkit.

Mi problema es tratar de obtener la velocidad actual siempre me devuelve un valor negativo, tengo llevar mi iPhone conmigo a lugares con una buena señal de 3g y no importa, el valor de la velocidad de ubicación es siempre -1.

aquí está el código que importa:

#define kRequiredAccuracy 1500.0 //meters #define kMaxAge 60.0 //seconds

en el método init:

self.locationManager=[[CLLocationManager alloc] init]; self.locationManager.delegate=self; self.locationManager.desiredAccuracy=kCLLocationAccuracyNearestTenMeters;

luego didUpdateToLocation:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{ NSTimeInterval ageInSeconds = [newLocation.timestamp timeIntervalSinceNow]; NSLog(@"Location: %@", [newLocation description]); if( newLocation.horizontalAccuracy > kRequiredAccuracy || fabs(ageInSeconds) > kMaxAge ) { NSLog(@"inacurate position"); [self.delegate inacuratePosition]; } else { [self.delegate locationUpdate:newLocation andOldLocation:oldLocation]; location=newLocation.coordinate; } if(tracking) { [self updatePosition]; } if(firstTime) { [self placeStartMark]; firstTime=FALSE; } }

y finalmente en el controlador de vista en el que estoy implementando el protocolo:

- (void)locationUpdate:(CLLocation *)newLocation andOldLocation:(CLLocation*)oldLocation{ double speed = [newLocation speed] *3.6; double altitude= [newLocation altitude]; [self checkMaxSpeedAndAltitude:speed :altitude]; if(speed< 0) speed=0; locationLabel.text=[NSString stringWithFormat:@"speed: %f km/h altitude: %f m", speed,altitude]; }

Me estoy volviendo loco, así que si alguien conoce alguna solución, será de gran ayuda. Gracias