У меня есть массив с приблизительно 1000 объектами, каждый из которых имеет точное значение координаты. То, что я хотел бы сделать, это взять кнопку «Поиск», которую у меня есть, и, при нажатии, определить текущее местоположение и рассчитать 10 ближайших объектов в этом месте. Какие-нибудь советы по лучшему пути? Благодарю.iPhone MKMapView: обнаружение ближайших местоположений в массиве с текущего местоположения
ответ
Эта формула работает только для плоских поверхностей, где сетки в каждом направлении одинаковы. Это справедливо в небольших масштабах на экваторе, но чем дальше от экватора, тем ближе линии долготы добираются друг к другу, в то время как широтные линии все еще находятся на одном и том же расстоянии друг от друга.
Например, из Окленда одна градус широты составляет ~ 111,2 км, а одна из долгот - 88,8 км. Таким образом, сетка не квадратная. Эффективно означает, что из (0,0) оно далее (0,1), чем (1,0).
Правильное решение - использовать CLLocation от Apple и его getDistanceFrom: (или distanceFromLocation:), который вычисляет истинные расстояния, основанные на поверхности сферы (с учетом прогноза WGS84, я думаю).
Mark,
Да, это довольно просто. Все, что вам нужно сделать, - это провести цикл по массиву и рассчитать расстояние между каждым и вашим текущим местоположением. Затем вы можете сохранить десять записей с самым низким расстоянием.
Расстояние формула просто:
((x1 - x2)^2 + (y1 - y2)^2)^(1/2)
Так что я бы иметь NSMutableArray
как я петельные, а затем сделать алгоритм типа пуш-поп вернуть низкий 10.
Если вам нужно помогите с координатным кодом, дайте мне знать.
- 1. Как получить 10 ближайших местоположений от текущего местоположения
- 2. Как показать направления для ближайших мест из текущего местоположения с помощью MKMapView
- 3. Как ждать менеджера местоположений для текущего местоположения?
- 4. iPhone: обнаружение касания в MKMapView
- 5. MKMapview: Как получить направление движения текущего местоположения?
- 6. Как увеличить MKMapView до текущего местоположения пользователя
- 7. iPhone mapKit аннотация для текущего местоположения
- 8. Поиск ближайших местоположений с использованием API Карт Google
- 9. iPhone: MKMapView и многоконтактный
- 10. Загрузка ближайших магазинов из текущего местоположения в Android-карте
- 11. Использование текущего местоположения из диспетчера местоположений в Google Maps openURL?
- 12. Проводка текущего местоположения на рельсы с iPhone
- 13. Использование Realm для фильтрации и сортировки ближайших местоположений
- 14. Обнаружение текущего языка ввода iPhone
- 15. iphone mkmapview
- 16. Проверьте, нет ли ближайших местоположений с GeoFire
- 17. Получение карты ближайших мест при наличии текущего местоположения
- 18. Тестирование текущего местоположения в симуляторе Iphone
- 19. Получение местоположения направления текущего местоположения в Android
- 20. Добавление случайных MKnnotations вокруг текущего местоположения в MKMapView
- 21. Маркировка местоположения в MKMapView
- 22. Список ближайших местоположений GeoFire в tableview
- 23. Поиск ближайших местоположений в другом месте
- 24. Сортировка коллекции местоположений GPS по расстоянию до текущего местоположения GPS
- 25. iPhone MKMapView в UITableViewCell
- 26. Почему MKMapView не показывает красную булавку текущего местоположения?
- 27. Как увеличить MKMapView до текущего местоположения пользователей без CLLocationManager?
- 28. Карта Swift MkMapView всегда сосредоточена вокруг текущего местоположения
- 29. Точность текущего местоположения Google в iOS
- 30. Получить индексный код текущего местоположения - iPhone SDK
Помните, что если вы заинтересованы только в сравнении расстояний (не фактических значений расстояния), вам не нужно делать квадратный корень, просто сравните значение distSquared – tato
tato, хороший крик, не произошло меня - я слишком занят, срывая математику средней школы :) – makdad
Хотя этот ответ отмечен как принятый, это неверно, потому что мир не плоский, а lat/long не является квадратной сеткой. Прокрутите вниз для ответа, который использует API Apple, чтобы получить правильное расстояние между точками. – Craig