Как визуализировать стрелку, указывающую на определенные координаты (широту, долготу), заданные pich и yaw - PullRequest
1 голос
/ 02 января 2012

Я хотел бы знать, как визуализировать стрелку, указывающую на определенные координаты (широта, долгота) пока я двигаюсь, держа трубку.

Я рассчитал шаг и рыскание желаемой позиции. Теперь я хочу знать, как продолжать указывать на эту позицию во время движения.

С уважением,

1 Ответ

2 голосов
/ 02 января 2012

В общем случае вы можете рассчитать угол наклона (угол между вашим местным меридианом и большим кругом, соединяющим ваше текущее положение и целевое положение, измеренное с северного направления) по следующей формуле:

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() метод.

Затем вы можете либо использовать компас и нарисовать стрелку под вычисленным углом поворота к линии север-юг, либо предположить, что север лежит в верхней части экрана вашего телефона.Второй подход имеет большой смысл, если вы отображаете карту, поскольку большинство людей привыкли иметь север наверху.

...