Я создаю приложение для отслеживания и обнаружил, что должен отфильтровать необработанные данные GPS, поэтому я использую фильтр Калмана, и он действительно сглаживает получающееся в результате отслеживание.Итак, я точно настраиваю два параметра, и чтобы иметь возможность изменять эти параметры на ходу с iPhone, я добавил два текстовых поля @IBOutlet weak var filterValueTextField: UITextField!
и @IBOutlet weak var horizontalAccuracyTextField: UITextField
!и я хочу подключить их к параметрам hcKalmanFilter?.rValue = 40.0
и guard mostRecentLocation.horizontalAccuracy < 60 else { return }
.Я пробовал разные способы, но получаю ошибку:
Невозможно вызвать инициализатор для типа 'Double' со списком аргументов типа '(String?)' При этой попытке: guard mostRecentLocation.horizontalAccuracy < Double(horizontalAccuracyTextField.text) else { return }
Это функция:
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
hcKalmanFilter?.rValue = 40.0
guard let mostRecentLocation = locations.last else { return }
guard mostRecentLocation.horizontalAccuracy > 0 else { return }
guard mostRecentLocation.horizontalAccuracy < 60 else { return }
guard mostRecentLocation.horizontalAccuracy < horizontalAccuracy else { return }
var myLocation: CLLocation = mostRecentLocation
if hcKalmanFilter == nil {
self.hcKalmanFilter = HCKalmanAlgorithm(initialLocation: myLocation)
}
else {
if let hcKalmanFilter = self.hcKalmanFilter {
if resetKalmanFilter == true {
hcKalmanFilter.resetKalman(newStartLocation: myLocation)
resetKalmanFilter = false
}
else {
let kalmanLocation = hcKalmanFilter.processState(currentLocation: myLocation)
self.actualRouteInUseCoordinatesArray.append(kalmanLocation.coordinate)
}
}
}
}
Я пытался обработать это так после того, как @maddy советует:
var filterValue:Double = 40.0
guard let filterAmount:String? = filterValueTextField.text! else {return}
filterValue = Double(filterAmount)!
hcKalmanFilter?.rValue = filterValue
, но я все еще получаю ошибку: Невозможно вызвать инициализатор для типа 'Double' ссписок аргументов типа '(String?)'