Поиск окружающих пригородов на основе широты и долготы с использованием цели C
Мне нужно определить объекты, которые находятся поблизости, с определенной широтой / долготой. У меня есть два набора объектов, хранящихся в Core Data:
PostalArea
- latitude
- longitude
- postcode
Store
- name
- latitude
- longitude
Мне нужно иметь возможность получить запись из PostalArea
стол, а затем найти магазины, которые находятся рядом.
Большинство примеров, которые я нашел, основаны на SQL. Я надеюсь, что кто-то может помочь мне с этим работать с Core Data. В идеале я хотел бы ограничить набор результатов определенным числом (скажем, 10), а не ограничивать его на основе расстояния.
РЕДАКТИРОВАТЬ: вытащить все записи в памяти вариант, если это необходимо.
2 ответа
Наиболее распространенным решением этого является определение минимального / максимального значения как лат, так и лонг, а затем сделать предикат, основанный на них. Это сузит ваш поиск до круга, а затем с этими оставшимися объектами в памяти вы сможете отсортировать по ближайшему к точке.
Обновить
Как только у вас есть объекты в памяти, вы можете делать с ними забавные вещи. Например, у вас может быть временное значение с именем "currentPoint", а затем вы можете получить KVO в результирующем массиве, например:
[resultingArray setValue:aPoint forKey:@"currentPoint"];
Тогда у вас может быть метод, который возвращает расстояние от той точки, по которой вы можете сортировать.
Это один из примеров, я уверен, что есть и другие способы, но общая идея состоит в том, чтобы поместить подмножество мест в память, чтобы потом можно было рассчитать расстояние и, наконец, отсортировать.
Как вы относитесь к варианту обслуживания REST? Если вы используете API Google, вы можете запросить именно эти вещи. Для Objective C. доступно множество интерфейсов JSON.