Как визуализировать стрелку, указывающую на определенные координаты (широту, долготу), заданные pich и yaw

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

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

С Уважением,

1 ответ

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

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

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

Другие вопросы по тегам