Я хочу сделать функцию, которая вычисляет угол между пользователем и одной точкой интереса (POI) со ссылкой на настоящий север.
У меня уже есть долгота и широта моего положения и позиции POI, и теперь мне нужен угол между ними.
Вот что я имею:
private float calcAzimuth1(float lat0, float long0, float lat1, float long1)
{
//user latitude and longitude
float userLat = (float) ((lat0 * ((float)Math.PI))/180);
float userLong = (float) ((long0 * ((float)Math.PI))/180);
//POI latitude and longitude
float latT1 = (float) ((lat1 * ((float)Math.PI))/180);
float longT1 = (float) ((long1 * ((float)Math.PI))/180);
//angle between them
float angle=??}
Check bearingTo функция класса местоположения http://developer.android.com/reference/android/location/Location.html#bearingTo(android.location.Location). Вы можете создать два объекта местоположения с вашего Lat/Longs, а затем получить опору между ними.
Другое, что вам может понадобиться, это рассчитать ориентацию устройства и затем объединить их. Это требует прослушивания Датчиков и расчета Севера от полученной информации. проверьте ответ здесь: показания компаса на SGS III