Невозможно улучшить точность вашего GPS в вашем приложении, но вы можете улучшить точность результатов.
Прежде всего, попробуйте поиграть с помощью filterFilter вашего CLLocationManger.
/*
* distanceFilter
*
* Discussion:
* Specifies the minimum update distance in meters. Client will not be notified of movements of less
* than the stated value, unless the accuracy has improved. Pass in kCLDistanceFilterNone to be
* notified of all movements. By default, kCLDistanceFilterNone is used.
*/
@property(assign, nonatomic) CLLocationDistance distanceFilter;
Также желаемая точность
/*
* desiredAccuracy
*
* Discussion:
* The desired location accuracy. The location service will try its best to achieve
* your desired accuracy. However, it is not guaranteed. To optimize
* power performance, be sure to specify an appropriate accuracy for your usage scenario (eg,
* use a large accuracy value when only a coarse location is needed). Use kCLLocationAccuracyBest to
* achieve the best possible accuracy. Use kCLLocationAccuracyBestForNavigation for navigation.
* By default, kCLLocationAccuracyBest is used.
*/
@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;
И, наконец, вы должны играть с точностью получаемых обновлений местоположения. Отказ от неправильного количества обновлений местоположения на основе их точности - это хороший способ избавиться от этих не очень действительных местоположений. Но также имейте в виду, что для получения действительно хорошего сигнала точности GPS потребуется некоторое время.