У вас должен быть объект, представляющий банк, ресторан или автобус (станция в примере). Возможно, вы захотите, чтобы он реализовал протокол MKAnnotation, так как вы можете добавить их в MKMapView. Каждый из этих объектов нуждается в свойстве координат (CLLocationCoordinate2D). Когда я делаю такие вещи, я также добавляю свойство расстояния (CLLocationDistance). Создавая экземпляры этих объектов в вашем viewcontroller, вы добавляете их в массив.
Теперь, когда приложение пользователя обновляется, вы позволяете каждому объекту вычислять расстояние от этого места до самого себя.
Например:
- (void)calculateDistance:(CLLocation *)location {
CLLocation *stationLocation = [[CLLocation alloc] initWithLatitude:coordinate.latitude longitude:coordinate.longitude];
distance = [location distanceFromLocation:stationLocation];
[stationLocation release];
}
Как только вы позволите каждому объекту рассчитать свое расстояние, теперь вы можете сортировать массив с объектами по расстоянию.
[stations sortUsingSelector:@selector(compareDistance:)]
Для этого требуется, чтобы на ваших объектах был реализован этот метод:
- (NSComparisonResult)compareDistance:(Station *)aStation {
if (distance < aStation.distance) return NSOrderedAscending;
if (distance > aStation.distance) return NSOrderedDescending;
return NSOrderedSame;
}
Теперь ваш массив с объектами, представляющими банки и т. Д., Должен быть отсортирован по расстоянию.
[stations objectAtIndex:0]
будет близко к вашему местоположению.