Как визуализировать стрелку, указывающую на определенные координаты (широту, долготу), заданные 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()
метод.
Затем вы можете либо использовать компас и нарисовать стрелку под вычисленным углом к линии север-юг, либо предположить, что север лежит вверху экрана вашего телефона. Второй подход имеет большой смысл, если вы отображаете карту, поскольку большинство людей привыкли иметь север наверху.