Zaczynam nową aplikację, która korzysta z coreLocation i frameworków mapkit.CLLOKACJA zwracająca ujemną prędkość
Mój problem polega na tym, że aktualna prędkość zawsze zwraca mi wartość ujemną, zabrałem ze sobą iPhone'a do miejsc z dobrym sygnałem 3g i nie ma to znaczenia, wartość position.speed wynosi zawsze -1.
Oto kod, który ma znaczenie:
#define kRequiredAccuracy 1500.0 //meters
#define kMaxAge 60.0 //seconds
w metodzie Init:
self.locationManager=[[CLLocationManager alloc] init];
self.locationManager.delegate=self;
self.locationManager.desiredAccuracy=kCLLocationAccuracyNearestTenMeters;
następnie 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;
}
}
i wreszcie w kontrolerze widoku, w którym” m realizujący protokół:
- (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];
}
Jestem szalony, więc jeśli ktoś zna jakieś rozwiązanie, na pewno będzie pomocny. Dzięki
Podajesz dobry sygnał 3G, gdy jest to prawie nieistotne dla "dobrych" aplikacji opartych na lokalizacji. Jeśli nie masz widoku satelitów, nie uzyskasz dobrej informacji. Sprawdź, czy twoja pozioma dokładność jest mała (mniej niż 200 metrów), to dobry znak, że masz satelity, a nie tylko triangulację wieży komórkowej) – KevinDTimm
ok, dzięki, sprawdzę to. – JonLOo
Sprawdziłem, czy mam poziomą dokładność 65 m, otrzymuję ujemną prędkość na wysokości. – JonLOo