Ich habe eine Liste, die mit Daten von einer API aufgefüllt wird. Also im Grunde ist das Verfahren wie folgt aus:LocationManager Standorte
Wenn der Benutzer die Anwendung öffnet ich tun:
if CLLocationManager.locationServicesEnabled() {
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.distanceFilter = 20
locationManager.startUpdatingLocation()
}
Da ist in meinem func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
nenne ich die API-Daten zu erhalten.
Aber das Problem ist, dass func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
bis zu 5-6 mal manchmal aufgerufen werden kann, so wird es viele API-Aufrufe geben und wenn ich nur eine Position bekomme, ist die Chance groß, dass ich einen Standort, der weit weg sein kann vom Benutzer.
Irgendwelche Ideen, wie Sie dieses Problem lösen können? Ich möchte grundsätzlich den besten Standort und mache so wenige API-Aufrufe wie möglich, vorzugsweise einen.
Nur ein paar Gedanken: (a) drosseln Sie Ihre eigene App, um maximal * n * Anfragen pro Minute zu machen; (b) jeder 'CLLocation' hat eine Eigenschaft' horizontalAccuracy'. Wenn es zu groß ist, ignorieren Sie den Standort –
Guten Kommentar @CodeDifferent, in Bezug auf die Idee mit 'horizontalAccuracy' was ist die niedrigste Genauigkeit Standortmanager akzeptiert? Damit ich weiß was ich ignorieren kann. – user5855868
Sie müssen experimentieren, um herauszufinden. [Die National Library of Medicine] (https://communityhealthmaps.nlm.nih.gov/2014/07/07/how-accurate-is-the-gps-on-my-smart-phone-part-2/) zitiert Eine Studie, die iPhone 3G Genauigkeit sagt, ist etwa 8 Meter. Das war 2009. –