2012-12-10 75 views
0

我需要找到地圖上北面和點之間的角度(21.4167,-39.8167)。如何找到地圖上某一點的角度方向(相對於北方)

這裏是我的代碼

double MECCA_LONGITUDE = 21.4167; 
double MECCA_LATITUDE = -39.8167; 

-(void) getAngle :(float) phoneAngle: (float) lon:(float) lat 
{ 

float ad = atan (sin (lon - MECCA_LATITUDE)/((cos (lat)) * (tan (MECCA_LATITUDE))) - ((sin (lat)) * (cos (lon - MECCA_LONGITUDE)))); 

NSLog(@"###### %f", CC_RADIANS_TO_DEGREES(ad)); 
} 

我仍然沒有得到正確的答案。任何提示將不勝感激。謝謝。

回答

2

你的主要問題是sin()cos()以弧度表示他們的論點,並且你正在通過度數(你也有麥加的經度和緯度互換)。

嘗試:

double MECCA_LATITUDE = 21.4167; 
double MECCA_LONGITUDE = 39.8167; 

double r_delta_lon = CC_DEGREES_TO_RADIANS(MECCA_LONGITUDE - lon); 
double r_lat2 = CC_DEGREES_TO_RADIANS(MECCA_LATITUDE); 
double r_lon1 = CC_DEGREES_TO_RADIANS(lon); 
double r_lat1 = CC_DEGREES_TO_RADIANS(lat); 

double ad = atan2(sin(r_delta_lon) * cos(r_lat2), 
    cos(r_lat1) * sin(r_lat2) - sin(r_lat1) * cos(r_lat2) * cos(r_delta_lon)); 
+0

感謝。這解決了這個問題。 –

相關問題