В общем случае вы можете рассчитать угол наклона (угол между вашим местным меридианом и большим кругом, соединяющим ваше текущее положение и целевое положение, измеренное с северного направления) по следующей формуле:
double y = Math.sin(long2-long1)*Math.cos(lat2);
double x = Math.cos(lat1)*Math.sin(lat2) - Math.sin(lat1)*Math.cos(lat2)*Math.cos(long2-long1);
double bearing = Math.atan2(y, x);
Примечаниечто lat1
, long1
, lat2
, long2
и bearing
все в радианах.Формула предполагает совершенно сферическую Землю.См. Также эту страницу .
Для получения более точных результатов на основе WSG84 вы можете использовать android.location.Location 's bearingTo()
метод.
Затем вы можете либо использовать компас и нарисовать стрелку под вычисленным углом поворота к линии север-юг, либо предположить, что север лежит в верхней части экрана вашего телефона.Второй подход имеет большой смысл, если вы отображаете карту, поскольку большинство людей привыкли иметь север наверху.