我正在創建一個應用程序,該應用程序將指向我繪製出的GPS座標方向上的簡單箭頭。所以我說的是我現在的位置lat和long,所以lat1,lon1是當前位置...然後將它們與lat和long的靜態座標進行比較,稱爲lat2,lon2。如何在我的目的地指向指南針?
我花了小時研究和測試,但我一直在得到同樣的問題。這非常嚴重。只要我開始朝目的地方向行駛,當使用iPhone內置的GPS /指南針時,箭頭就會全部失控。它有時會顯示箭頭完全相反的一面,掛在右邊......幾乎沒有什麼是堅實的。
這裏是我運行
cpLocLat = 43.026629當前代碼;
cpLocLon = -78.867188;
這些是浮點值和我想要開車的座標。
float lat1 = self.locManager.location.coordinate.latitude;
float lat2 = cpLocLat;
float lon1 = self.locManager.location.coordinate.longitude;
float lon2 = cpLocLon;
float heading = atan2(sin(lon2 - lon1) * cos(lat2), cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(lon2 - lon1));
heading = RADIANS_TO_DEGREES(heading);
if (heading < 0) {
heading = heading + 360;
}
我每次調用locationManager didUpdateToLocation delagate時都會使用這個函數。一旦我有這些信息,它在的LocationManager didUpdateHeading delagte用於下列要求:
CGAffineTransform where = CGAffineTransformMakeRotation(degreesToRadians((degrees - newHeading.magneticHeading)));
[self.compassContainer2 setTransform:where];
這裏是degressToRadians宏觀
#define degreesToRadians(x) (M_PI * x/180.0)
所以每當我運行這段代碼是epically失敗,是讓我瘋狂!
順便說一句 - 我已經使用以下網址參考
http://www.shawngrimes.me/2011/07/calculating-heading-with-corelocation/
Using Compass to point to actual coordinate location instead of just North
Point to location using compass
你確定標題計算三角公式是正確的嗎? – 2012-06-15 08:03:46
我已經嘗試了其他幾個公式,包括我發佈的鏈接..所有導致類似的效果。 –
請確保你沒有打電話給無效位置(準確率爲負) – jrturton