Tôi đang sử dụng Location Services
trong một số ứng dụng của mình. Tôi có một phương pháp mà tôi sử dụng trong phương pháp locationManager:didUpdateToLocation:fromLocation:
của mình để lọc ra các vị trí xấu, không chính xác hoặc quá xa. Và để giảm thiểu gps "jitter". Dưới đây là những gì tôi sử dụng:Dịch vụ vị trí trên iOS Phương pháp lọc ra các vị trí không hợp lệ/không chính xác
/**
* Check if we have a valid location
*
* @version $Revision: 0.1
*/
+ (BOOL)isValidLocation:(CLLocation *)newLocation withOldLocation:(CLLocation *)oldLocation {
// Filter out nil locations
if (!newLocation) return NO;
// Filter out points by invalid accuracy
if (newLocation.horizontalAccuracy < 0) return NO;
if (newLocation.horizontalAccuracy > 66) return NO;
// Filter out points by invalid accuracy
#if !TARGET_IPHONE_SIMULATOR
if (newLocation.verticalAccuracy < 0) return NO;
#endif
// Filter out points that are out of order
NSTimeInterval secondsSinceLastPoint = [newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp];
if (secondsSinceLastPoint < 0) return NO;
// Make sure the update is new not cached
NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow];
if (locationAge > 5.0) return NO;
// Check to see if old and new are the same
if ((oldLocation.coordinate.latitude == newLocation.coordinate.latitude) && (oldLocation.coordinate.longitude == newLocation.coordinate.longitude))
return NO;
return YES;
}//end
Có ai có bất kỳ cải tiến nào về phương pháp này để làm cho nó chính xác hơn không? Có phải quá cao của horizontalAccuracy
và sẽ nhận được nhiều vị trí không hợp lệ? Tôi có nên hạ thấp điều này?
Có cách nào để có được đi xe của "jitter" mà gps trên iPhone cho?
Tôi bắt đầu làm việc trên một cái gì đó tương tự. Tôi đang suy nghĩ về việc thực hiện một bộ lọc Kalman, nhưng tôi không chắc chắn nếu điều này sẽ được hơn giết. Tôi quan tâm để xem câu trả lời của mọi người về câu hỏi này. – scord
Vâng, tôi cũng nhìn vào một bộ lọc Kalman, nhưng toán học cho điều đó thật điên rồ. –