Задача C: Как составить список мест с ближайшей геолокацией - PullRequest
0 голосов
/ 06 мая 2011

Я составил список мест с информацией о широте и долготе.Могу ли я проверить, каков наилучший подход к фильтрации и заполнению списка «ближайших» геолокаций в таблице и просмотре карты на основе моего текущего местоположения?(или пункт назначения, введенный пользователем).Также можно ли указать, какой радиус меня интересует?например, выберите только все ближайшие книжные магазины в пределах 5 км от моего местоположения и т. д.

Благодарим вас за этот совет

Zhen Hoe

Ответы [ 3 ]

4 голосов
/ 06 мая 2011

Может быть, я что-то упускаю, но почему бы вам просто не добавить свои местоположения в mapView и не центрировать карту на текущем местоположении пользователя или там, где он хочет? MapKit сделает все расчеты за вас, и покажет только те, которые находятся рядом с центром. Пользователь может установить свой собственный радиус, увеличивая и уменьшая масштаб. MapKit высоко оптимизирован именно для этой цели, поэтому вы можете видеть «дождь из булавок» в режиме реального времени.

Обновление: Вы также можете пойти другим путем: когда у вас есть аннотации на карте, вы можете запросить у карты те аннотации, которые находятся в видимой области, с помощью:

- (NSSet *)annotationsInMapRect:(MKMapRect)mapRect

Из документов:

Этот метод предлагает быстрый способ извлечения объектов аннотаций в определенной части карты. Этот метод намного быстрее , чем сам линейный поиск объектов в свойстве аннотаций.

3 голосов
/ 06 мая 2011

Вы можете найти - (CLLocationDistance)distanceFromLocation:(const CLLocation *)location очень полезным http://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocation_Class/CLLocation/CLLocation.html#//apple_ref/occ/instm/CLLocation/distanceFromLocation:

1 голос
/ 06 мая 2011

Формула haversine часто используется в навигации для расчета расстояний между координатами. Этот является довольно приличным ресурсом для вычислений расстояния, и даже содержит пример кода для haversine (хотя он есть в Javascript).

Если ваш список местоположений относительно мал (сотни, даже), вы, вероятно, можете просто перебрать весь список и рассчитать расстояние между каждым местом относительно текущего местоположения.

...