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