Я работаю в 1 приложении iphone, где нам нужно показать направление от 1-го места до другого места То есть с текущего местоположения в в каком направлении (N или E или W или S или NE или NW или SE или SW) место назначения. Я знаю, как получить направление от 1-го места до другого места, но я ищу, чтобы показать направление. Является ли моя проблема понятной? Если кто-нибудь знает, как это сделать, пожалуйста, помогите мне Спасибо каждому!Использование длины и долготы текущего местоположения и места назначения, как мы можем получить направление в iphone
ответ
Посмотрите на магнитометр/керне местонахождения Яблоком: Teslameter
Вы знаете координаты в двух местах?
Посмотрите на CLLocationCoordinate2D:
широта широта в градусах. Положительные значения указывают на широты к северу от экватора. Отрицательные значения указывают на широты к югу от экватора.
longitude Долгота в градусах. Измерения относятся к нулевому меридиану, с положительными значениями, простирающимися к востоку от меридиана, и отрицательными значениями, простирающимися к западу от меридиана.
Latitude поэтому довольно просто, если широта адресата меньше широты текущего местоположения, то она лежит на север, если она больше, чем широты текущего местоположения, то она лежит на юг.
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 ...
Это поздно здесь, и я не испытывая эти выражения, так что если они кажутся полезными, пожалуйста, убедитесь, что вы понимаете, и проверить их, вместо того, чтобы пытаться применить их вслепую. К сожалению, вероятность того, что я перенесла знак или координатную пару, очень высока.
Привет, Иона, спасибо за ответ и ответ, я попробовал код и использовал значение курса, которое я написал, как показано ниже: if (heading> = -45 || heading <0) return @"Север"; else if (heading> = 0 && heading <45) return @ "East"; else if (heading> = 45 && heading <90) return @ "South"; else if (heading> = 90 && heading <135) return @ "West"; else if (heading> = 135 && heading <180) return @ "North East"; else if (heading> = 180 || heading <225) return @ "North West"; else if (heading> = 225 && heading <270) return @ "South East"; else if (heading> = 270 && heading <315) return @ "South West"; это правильно – ratnasomu
Вы попробовали? Вы, кажется, предполагаете, что заголовок будет варьироваться от 0 до 360, что не соответствует предположениям, которые я сделал в моем примере. Посмотрите, как рассчитываются эти значения и учитываются возможные варианты. – Jonah
Да, я предположил, что ты сказал. это неправильно? Можете ли вы сказать мне, что мне нужно делать? – ratnasomu
@ Joe Blow - не рисунок Стрелка выхода должна соответствовать Диамант: 1 км к северо-западу, я нашел расстояние, ищущее направление – ratnasomu
да, я хочу, чтобы ответ был подобным N или E или W или S или NE или NW или SE или SW – ratnasomu