У меня есть база данных Core Data со свойствами широты и долготы. Есть ли способ использовать Базовое Местоположение getDistanceFrom:
метод для нахождения пяти ближайших мест к a CLLocation
полученный из GPS? Сделайте я должен загрузить все объекты с помощью Базовых Данных и синтаксического анализа через них, с помощью getDistanceFrom:
на каждом или там более легкий путь?
Вам придется выполнять через них итерации один за другим; насколько я знаю, другого способа сделать это нет.
Однако, сделать это можно с помощью ограничивающего окошка, когда вы получите элементы из основных данных - это уменьшит количество возвращаемых объектов.
т.е. что-то вроде
float latMax = wantedLat + 1;
float latMin = wantedLat - 1;
float lngMax = wantedLng + 1;
float lngMin = wantedLng - 1;
NSPredicate *predicate = [NSPredicate
predicateWithFormat:@"lat > %f and lat < %f and lng > %f and lng < %f",
latMin, latMax, lngMin, lngMax];
Хотя, в зависимости от того, сколько у вас данных и насколько они расположены на расстоянии, вы захотите использовать другое число, чем 1!
Sam
PS Также, я не принял во внимание тот факт, что долгота обертывается!
Вы не можете использовать CoreData для поиска ближайшего объекта, но, возможно, захотите сузить запрос с помощью ограничивающего поля. Для поиска ближайшего объекта, возможно, вы предпочтете просто использовать разницу в латах/длине, которая значительно быстрее, чем вычисление реальных расстояний.
У меня был аналогичный вопрос: