2013-07-30 80 views
2

我想計算2 lat的長度之間的距離。我能夠計算距離如下獲取iOS6中2經度和緯度的距​​離+

CLLocation *currentLoc = [[CLLocation alloc] initWithLatitude:-24.4132995 longitude:121.0790024]; 
CLLocation *restaurnatLoc = [[CLLocation alloc] initWithLatitude:-32.8310013 longitude:150.1390075]; 
CLLocationDistance meters = [restaurnatLoc distanceFromLocation:currentLoc]; 
NSLog(@"Distance between 2 geo cordinates: %.2f Meters",meters); 

現在我想從currentLocation到restaurnatLoc方向。爲此,我有下面的代碼

double DegreesToRadians(double degrees) {return degrees * M_PI/180;}; 
double RadiansToDegrees(double radians) {return radians * 180/M_PI;}; 

-(double) bearingToLocationFromCoordinate:(CLLocation*)fromLoc toCoordinate:(CLLocation*)toLoc 
{ 
    double lat1 = DegreesToRadians(fromLoc.coordinate.latitude); 
    double lon1 = DegreesToRadians(fromLoc.coordinate.longitude); 

    double lat2 = DegreesToRadians(toLoc.coordinate.latitude); 
    double lon2 = DegreesToRadians(toLoc.coordinate.longitude); 

    double dLon = lon2 - lon1; 

    double y = sin(dLon) * cos(lat2); 
    double x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(dLon); 
    double radiansBearing = atan2(y, x); 

    return RadiansToDegrees(radiansBearing); 
} 

它返回軸承= 114.975752現在,我怎麼能決定是否餐廳是北,南,西,東,西北,東北,西南,東南,從我目前的位置?

我從這個鏈接得到1個解決方案Direction based off of 2 Lat,Long points但是,如果我考慮這個解決方案,那麼我對從我的位置(紅色圓圈)到餐廳(綠色圓圈)的軸承114有懷疑,如下所示。糾正我,如果我錯了。

enter image description here

由於當前的位置是「西澳大利亞」 &餐廳位置是「悉尼」,如谷歌地圖顯示。

任何機構都可以告訴我這裏出了什麼問題嗎?謝謝。

///////////////////////////// 更新 ////////////// ///////////////

我的指南針圖是錯誤的。這是正確的圖表一切都要歸功於AlexWien

enter image description here

現在我得到正確的輸出

回答

2

你的羅盤是完全錯誤的。你有沒有看過指南針?打開iphone羅盤應用程序,看看90Degrees的位置。它是東方,而不是西方,就像你的圖形。

地理方向是順時針測量!

所以114度是東方,這符合你的期望

+0

我的壞...非常抱歉。其實我沒有iPhone,我正在使用iPod touch。感謝您指點我。 – iOSAppDev

相關問題