Как показать направление движения от текущего местоположения к другому местоположению на карте в ios?

У меня есть требование, когда я должен показать направление движения к любому месту на карте из текущего местоположения пользователя. Скажем, если у нас есть 4 аннотации местоположения на карте, кроме текущего местоположения, и я хочу показать направление к любому месту после нажатия на него. Как мы можем этого достичь. Я просмотрел документацию Map API и Locaiotn API и обнаружил, что мы получаем значение заголовка в методе делегата, который предоставляется API, когда мы вызываем метод startupdatingheading. Я не понимаю, как мы можем получить данные о курсе между двумя местоположениями извне. Пожалуйста, помогите мне. Заранее спасибо.


person i_Intiution    schedule 23.04.2014    source источник
comment
Вы хотите показать направление маршрута между двумя точками? Если да, то вы можете вызвать приложение карты по умолчанию, чтобы сделать то же самое. Вам нужно создать MapItems и перейти к приложению карты по умолчанию.   -  person    schedule 23.04.2014
comment
@TechNet-Weblineindia Спасибо за ваш ответ. Не направление маршрута, я ищу, чтобы показать направление движения, указывающее на любое место из текущего местоположения.   -  person i_Intiution    schedule 23.04.2014
comment
Взгляните на этот stackoverflow.com/a/18961856/771231   -  person Desdenova    schedule 23.04.2014
comment
На поверхности сферы, как и земля, направление меняется с расстоянием. Как далеко ваши местоположения обычно друг от друга?   -  person user3071962    schedule 23.04.2014
comment
Места имеют около 50 км расстояние? Но мне интересно, как это влияет на заголовок?   -  person i_Intiution    schedule 25.04.2014
comment
При заданном расстоянии пеленг компаса на пункт назначения постоянен, извините, не хотел вас запутать. По мере приближения к пункту назначения направление к нему будет меняться, потому что, по сути, вы следуете сечению через сферу.   -  person user3071962    schedule 25.04.2014
comment
У вас была возможность попробовать мой ответ ниже?   -  person user3071962    schedule 28.04.2014
comment
Вы смогли решить свою проблему?   -  person user3071962    schedule 05.05.2014


Ответы (1)


Это рассчитает начальный азимут, чтобы добраться от lat1,lon1 до lat2,lon2 по прямой.

double lat1=48.0;  // source latitude, example data
double lon1=17.0;  // source longitude

double lat2=49.0;  // destination latitude
double lon2=18.0;  // destination longitude

double lat1Rad = lat1 * M_PI / 180;
double lat2Rad = lat2 * M_PI / 180;

double dLon = (lon2 - lon1) * M_PI / 180;

double y = sin(dLon) * cos(lat2Rad);
double x = cos(lat1Rad) * sin(lat2Rad) - sin(lat1Rad) * cos(lat2Rad) * cos(dLon);

double bearingRad = atan2(y, x);

// this is the bearing from source to destination in degrees, normalized to 0..360
double bearing = fmod((bearingRad * 180 / M_PI + 360),360);
person user3071962    schedule 25.04.2014