Как получить угол любого географического положения с севера в Android? - PullRequest
0 голосов
/ 19 января 2012

В моем приложении я хочу вычислить угол определенного местоположения (даны широта и долгота) с севера. Есть ли способ рассчитать это. На самом деле я нашел указание направления телефона, но я хочу получитьугол расположения с севера. Вот мой код. Пожалуйста, предложите любое соответствующее решение. Спасибо

   myAzimuth=Math.round(event.values[0]);
            myPitch=Math.round(event.values[1]);
            myRoll=Math.round(event.values[2]);
         Toast.makeText(this, "Value"+myAzimuth, Toast.LENGTH_SHORT).show();        
        if(myAzimuth<22){
        Toast.makeText(this, "North Direction", Toast.LENGTH_SHORT).show();     
        }

          else if (myAzimuth >= 22 && myAzimuth < 67)
              Toast.makeText(this, "North East", Toast.LENGTH_SHORT).show();        
          else if (myAzimuth >= 67 && myAzimuth < 112)
              Toast.makeText(this, "East Direction", Toast.LENGTH_SHORT).show();        
          else if (myAzimuth >= 112 && myAzimuth < 157)
              Toast.makeText(this, "South east Direction", Toast.LENGTH_SHORT).show();      
          else if (myAzimuth >= 157 && myAzimuth < 202)
              Toast.makeText(this, "South Direction", Toast.LENGTH_SHORT).show();       
          else if (myAzimuth >= 202 && myAzimuth < 247)
              Toast.makeText(this, "South west Direction", Toast.LENGTH_SHORT).show();      
          else if (myAzimuth >= 247 && myAzimuth < 292)
              Toast.makeText(this, "west Direction", Toast.LENGTH_SHORT).show();        
          else if (myAzimuth >= 292 && myAzimuth < 337)
              Toast.makeText(this, "North west Direction", Toast.LENGTH_SHORT).show();      
          else if (myAzimuth >= 337)
              Toast.makeText(this, "North Direction", Toast.LENGTH_SHORT).show();       

1 Ответ

1 голос
/ 19 января 2012

В зависимости от того, что вы подразумеваете под «углом расположения с севера», существует несколько возможных решений.Одним из них является следующее:

final float[] results= new float[3];
// The computed distance in meters is stored in results[0].
// If results has length 2 or greater, the initial bearing is stored in results[1].
// If results has length 3 or greater, the final bearing is stored in results[2].
Location.distanceBetween(refLat, refLong, 90.0f, 0.0f, results);
final float bearing = results[1];

Вы получаете направление для курса от вашего исходного местоположения до северного полюса.Ориентация / курс изменяется при следовании по курсу наименьшего расстояния.

Или даже лучше, как предложено Константином Приблудой (см. Комментарий ниже)

final float bearing = 0.0f;
...