[英]Always negative speed iOS
我正在使用委托方法:
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
為了獲得當前和舊位置,我使用了:
CLLocation *newLocation = [locations lastObject];
self.currentUserLocation = newLocation;
if(self.oldLocation == nil)
{
self.oldLocation = newLocation;
return;
}
編輯1:我現在可以獲得舊位置。
但是當我使用[newLocation speed];
時,我總是有負速度[newLocation speed];
= -1
使用的設備是iPhone 4s。 你有想法嗎 ?
另外,對於locationManager,我使用了kCLLocationAccuracyBestForNavigation和kCLDistanceFilterNone。 我可以在地圖上看到我當前的位置在移動。
編輯2:
我終於用這種方法解決了速度問題:
- (CLLocationSpeed)speedTravelledFromLocation:(CLLocation*)fromLocation;
{
NSTimeInterval tInterval = [self.timestamp timeIntervalSinceDate:fromLocation.timestamp];
double distance = [self distanceFromLocation:fromLocation];
double speed = (distance / tInterval);
return speed;
}
此方法返回從self和fromLocation之間的距離和時間增量計算的速度。
我在這個存儲庫中找到了這個方法: https : //github.com/100grams/CoreLocationUtils希望它能幫到某人;)
編輯3
得到它了! 那是因為我在模擬器上測試! 我在設備上進行了測試,使用[newLocation speed]的速度是正確的!
謝謝您的幫助。 此致,Lapinou。
為什么期望位置回調有2個或更多位置?
這個方法:
(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
通常只為您提供一個位置,除非由於某種原因多個位置在調用該方法之前到達,但您通常只會獲得一個位置。
問題是你假設那個方法給你以前的位置和新的位置,而不是那樣。
負速度通常意味着您沒有GPS信號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.