iOS сравнивая географические местоположения - PullRequest
1 голос
/ 15 июня 2011

Интересно, как я вычисляю расстояние между пользовательской позицией iPhone и заданными координатами, хранящимися, например, в списке?

Ответы [ 2 ]

6 голосов
/ 15 июня 2011

Вы можете использовать метод CLLocation distanceFromLocation: для вычисления между двумя CLLocation объектами.Вы можете использовать CLLocationManager для получения текущего местоположения пользователя и создать экземпляр CLLocation для координат, используя инициализатор initWithLatitude:longitude:.

distanceFromLocation: возвращает расстояние в метрах.

1 голос
/ 15 июня 2011

Это общая формула для расчета момента между точками в километрах.

acos(sin(lat1rad) * sin(lat2rad) + cos(lat1rad) * cos(lat2rad) * cos(lon2rad - lon1rad))) * 6378.1

6378,1 - ок. радиус Земли в километрах. Убедитесь, что вы выражаете значения в радианах, а не в градусах. На всякий случай самый простой способ пересчета градусов в радианы это:

radians = (degrees * 0.01745329) // degrees * pi over 180

РЕДАКТИРОВАТЬ: исправлена ​​формула для преобразования между градусами и радианами. Спасибо Озза !

...