Наиболее распространенным решением этого является определение минимальной / максимальной широт и длинных, а затем создание предиката на их основе. Это сузит ваш поиск до круга, а затем с этими оставшимися объектами в памяти вы сможете отсортировать по ближайшему к точке.
Обновление
Когда у вас есть объекты в памяти, вы можете делать с ними забавные вещи. Например, у вас может быть временное значение с именем «currentPoint», а затем вы можете получить KVO в результирующем массиве, например:
[resultingArray setValue:aPoint forKey:@"currentPoint"];
Тогда у вас может быть метод, который возвращает расстояние от той точки, по которой вы можете сортировать.
Это один пример, я уверен, что есть и другие способы, но общая идея состоит в том, чтобы поместить подмножество мест в память, чтобы потом можно было рассчитать расстояние и, наконец, отсортировать.