Вопрос по ios5 – iOS MapKit показывает ближайшие аннотации на определенном расстоянии

1

В настоящее время я работаю над приложением для iPhone / iPad. У меня есть несколько аннотаций в моем MapKit, я хочу отслеживать местоположение пользователя и отображать аннотации, которые находятся в пределах 3 км. Может ли кто-нибудь дать мне старт?

С какой частью у тебя проблемы? Место отслеживания? Нахождение точек в радиусе? Отображение аннотаций? Conrad Shultz
Отображение аннотаций из базы данных и отображение точек в радиусе. Пожалуйста, предложите мне несколько хороших уроков, если таковые имеются. BigAppleBump

Ваш Ответ

1   ответ
1

.

Я предполагаю, что у вас есть метод, который возвращает набор из NSValue-wrappedCLLocationCoordinate2D структуры (основной подход один и тот же, независимо от того, каковы ваши внутренние представления данных). Затем вы можете отфильтровать список, используя метод, похожий на следующий (предупреждение: напечатано в браузере):

NSSet *locations = ...;
CLLocation centerLocation = ...; // Reference location for comparison, maybe from CLLocationManager
CLLocationDistance radius = 3000.; // Radius in meters
NSSet *nearbyLocations = [locations objectsPassingTest:^(id obj, BOOL *stop) {
        CLLocationCoordinate2D testCoordinate;
        [obj getValue:&testCoordinate];
        CLLocation *testLocation = [[CLLocation alloc] initWithLatitude:testCoordinate.latitude
                                                              longitude:testCoordinate.longitude];
        BOOL returnValue = ([centerLocation distanceFromLocation:testLocation] <= radius);
        [testLocation release];
        return returnValue;
    }
];

С отфильтрованным набором координат в руке вы можете создатьMKAnnotation экземпляры и добавить их на карту в обычном порядке, как описано вДокументация Apple.

Если у вас есть много тысяч тестовых мест, то я полагаю, что такой подход может вызвать проблемы с производительностью. Затем вы захотите переключить свой подход хранения точек, например,quadtrees, чтобы уменьшить количество точек, которые должны быть отфильтрованы по точности. Но не оптимизируйте преждевременно!

Надеюсь, это поможет!

Спасибо за ваш ответ . Я уже нашел трюк. :) BigAppleBump

Похожие вопросы