Существует каноническая книга: Гамма, Руль, Johnson, Vlissides: "Шаблоны Dessign - Элементы Reusable Object-Oriented Software", которая запустила все это. Это содержит 23 шаблона.
Как насчет приведенного ниже кода, который работает из метода делегата. В качестве альтернативы, если вы действительно хотите опросить, сохраните свое предыдущее местоположение и проверьте расстояние, измененное с момента последнего опроса, и используйте ручной метод (также показанный ниже) для расчета скорости.
Скорость рассчитывается / предоставляется в м / с поэтому умножьте на 3,6 для км / ч или на 2,23693629 для миль / ч.
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
//simply get the speed provided by the phone from newLocation
double gpsSpeed = newLocation.speed;
// alternative manual method
if(oldLocation != nil)
{
CLLocationDistance distanceChange = [newLocation getDistanceFrom:oldLocation];
NSTimeInterval sinceLastUpdate = [newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp];
double calculatedSpeed = distanceChange / sinceLastUpdate;
}
}
Вы действительно можете использовать только тот метод делегирования, который вы предложили в своем вопросе.
Даже если вы обращаетесь к [CLLocationManager location] каждые 2 секунды, вы будете получать только координаты, которые вы получили в последний раз в методе делегата выше.
Почему нужно проводить опрос каждые две секунды? В некоторых случаях iphone может обновлять свои координаты быстрее.
HTH