2015-05-07 9 views
2

У меня есть текущая долгота и широта пользователя и пункт назначения (только статическое местоположение). Как найти направление angle(0->360) между местоположением текущего пользователя и пунктом назначения?android как найти угол (0-> 360) в направлении назначения от текущего местоположения пользователя

В настоящее время я использую currentLocation.bearingTo(destination) как задокументировано here, но я не могу найти правильный угол.

+0

Каков ваш текущий вход и выход этой функции? – Reasurria

+0

Улучшенная формулировка и грамматика – ebarrenechea

ответ

2

Наконец-то я получил решение для этого, и я делюсь этим, потому что он может помочь другим.

private double bearing(double startLat, double startLng, double endLat, double endLng){ 
     double longitude1 = startLng; 
     double longitude2 = endLng; 
     double latitude1 = Math.toRadians(startLat); 
     double latitude2 = Math.toRadians(endLat); 
     double longDiff= Math.toRadians(longitude2-longitude1); 
     double y= Math.sin(longDiff)*Math.cos(latitude2); 
     double x=Math.cos(latitude1)*Math.sin(latitude2)-Math.sin(latitude1)*Math.cos(latitude2)*Math.cos(longDiff); 
     return (Math.toDegrees(Math.atan2(y, x))+360)%360; 
    } 

Если метод не возвращает желаемое значение, тогда вы должны проверить свои значения долготы и широты. Обратите внимание, что этот метод возвращает значение от 0 до 360 градусов.