Ich beginne eine neue App, die die CoreLocation- und Mapkit-Frameworks verwendet.CLLocation gibt negative Geschwindigkeit zurück
Mein Problem ist, die aktuelle Geschwindigkeit zu bekommen bringt mir immer einen negativen Wert, ich habe mein iPhone mit mir zu Orten mit einem guten 3g Signal und es ist egal, location.speed Wert ist immer -1.
hier ist der Code, der zählt:
#define kRequiredAccuracy 1500.0 //meters
#define kMaxAge 60.0 //seconds
in der init-Methode:
self.locationManager=[[CLLocationManager alloc] init];
self.locationManager.delegate=self;
self.locationManager.desiredAccuracy=kCLLocationAccuracyNearestTenMeters;
dann 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;
}
}
und schließlich im View-Controller, in dem ich m Implementierung des Protokolls:
- (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];
}
Ich werde verrückt, wenn jemand eine Lösung kennt, wird es sicher hilfreich sein. Dank
Sie erwähnen ein gutes 3G-Signal, wenn dies für "gute" standortbasierte Anwendungen nahezu unerheblich ist. Wenn Sie keine Satelliten sehen, erhalten Sie keine guten Informationen. Überprüfen Sie, dass Ihre horizontale Genauigkeit ist klein (weniger als 200 Meter), es ist ein guter Betrüger, um zu sehen, dass Sie Satelliten haben und nicht nur Zelle Turm Triangulation) – KevinDTimm
ok danke ich werde es überprüfen – JonLOo
Ich habe eine sogar mit einer 65m horizontalen Genauigkeit überprüft, Ich bekomme eine negative Geschwindigkeit und eine Höhe. – JonLOo