Знаете ли вы координаты двух мест?
Посмотрите на CLLocationCoordinate2D :
широта Широта в градусах.Положительные значения указывают широты к северу от экватора.Отрицательные значения указывают широты к югу от экватора.
долгота Долгота в градусах.Измерения относятся к нулевому меридиану, положительные значения простираются к востоку от меридиана, а отрицательные значения простираются к западу от меридиана.
Поэтому широта довольно проста, если широта пункта назначения меньше текущей позицииширота, то она лежит на севере, если она больше, чем широта текущего местоположения, то она лежит на юге.
latitudinal_distance = destination.latitude - origin.latitude
Долгота немного сложнее, так как следует учитывать, чтопункт назначения в трех четвертях пути вокруг Земли на восток, вероятно, лучше выражен на западе.Снова сравните значения долготы, рассмотрите расстояние как восток, так и запад, обработайте пересечение меридиана и выберите более короткое расстояние.
distance_east = (origin.longitude > 0 && destination.longitude < 0) ? 180 - origin.longitude + destination.longitude - -180 : destination.longitude - origin.longitude; if (distance_east < 0) distance_east += 360
distance_west = (origin.longitude < 0 && destination.longitude > 0) ? -180 - origin.longitude - 180 - destination.longitude : origin.longitude - destination.longitude; if (distance_west < 0) distance_west += 360
longitudinal_distance = min(distance_east, distance_west)
Как только вы узнаете, сколько градусов широты и долготы разделяют две ваши точки, вы можете рассчитать курс до пункта назначения и решить, какой из них должен отображаться, а какие точки компаса.На компасе только с четырьмя точками (N, E, S, W) каждая точка будет покрывать 90 градусов.На компасе с 8 точками каждая точка будет покрывать 45 градусов.Надеюсь, вы поняли.
heading = arctan(longitudinal_distance / latitudinal_distance)
if (heading >= -45 || heading < 45) return 'N'; else if (heading >= 45 && heading < 135) return 'E'; else if ...
Уже поздно, и я не проверяю эти выражения, поэтому, если они кажутся полезными, пожалуйста, убедитесь, что вы понимаете и тестируете их, а непытаясь применять их вслепую.Вероятность того, что я переставил пару знаков или координат, к сожалению, высока.