Рассчитать направление компаса / курс на местоположение в Android - PullRequest
52 голосов
/ 30 ноября 2010

Я хочу отобразить стрелку в моем местоположении на карте Google, которая отображает мое направление относительно места назначения (вместо севера).

a) Я рассчитал север, используя значения датчика измагнитометр и акселерометр.Я знаю, что это правильно, потому что он совпадает с компасом, используемым в представлении Google Map.

b) Я рассчитал начальный пеленг от моего местоположения к месту назначения, используя myLocation.bearingTo (destLocation);

Я пропускаю последний шаг;из этих двух значений (a и b) какую формулу я использую, чтобы получить направление, в котором телефон указывает относительно места назначения?

Цените любую помощь для ума!

Ответы [ 12 ]

0 голосов
/ 18 августа 2012

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

float thetaMeThem = 0.0;
if (myLocation.bearingTo(targetLocation) > myLocation.getBearing()){ 
     thetaMeThem = myLocation.bearingTo(targetLocation) - azimuth + declination;} 

См. Sensor.TYPE_ORIENTATION для определения азимута.

См. GetDeclination () для определения склонения

Это предполагает, что склонение отрицательное (запад от истинного севера) и их отношение> yourBearing.

Если склонение положительное, а yourBearing> ихBearing, другой вариант:

float thetaMeThem = 0.0;
if (myLocation.bearingTo(targetLocation) < myLocation.getBearing()){ 
     thetaMeThem = azimuth - (myLocation.bearingTo(targetLocation) - declination);} 

Я не проверял это полностью, но игра с углами на бумаге привела меня сюда.

0 голосов
/ 08 августа 2012

Терминология: Разница между ИСТИННЫМ севером и Магнитным севером известна как «отклонение», а не склонение.Разница между показаниями вашего компаса и магнитным курсом называется «отклонением» и зависит от курса.Качание компаса определяет ошибки устройства и позволяет применять исправления, если устройство имеет встроенную коррекцию. Магнитный компас будет иметь карту отклонения, которая описывает ошибку устройства на любом курсе.

Склонение: термин, используемый в Astroнавигация: склонение как широта.Он сообщает, как далеко звезда находится от небесного экватора.Чтобы найти склонение звезды, следуйте часовому кругу «прямо вниз» от звезды до небесного экватора.Угол от звезды до небесного экватора по часовой стрелке - это склонение звезды.

...