私はobjective-cを初めて使用するので、質問があまりにもくだらない場合はお詫び申し上げます。
コンパスをプログラミングしていますが、まだ機能しています (チュートリアルのおかげです)。実際の位置(経度と緯度)が表示されます。コンパス内の矢印が特定の場所 (経度 2 と緯度 2) への方向を示すことは可能ですか? iPhone の磁力と真の向きを考慮する必要があることを読みました。
私はobjective-cを初めて使用するので、質問があまりにもくだらない場合はお詫び申し上げます。
コンパスをプログラミングしていますが、まだ機能しています (チュートリアルのおかげです)。実際の位置(経度と緯度)が表示されます。コンパス内の矢印が特定の場所 (経度 2 と緯度 2) への方向を示すことは可能ですか? iPhone の磁力と真の向きを考慮する必要があることを読みました。
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {
double heading = newHeading.trueHeading; //in degree relative to true north
double bearing = ... //get current bearing in degree relative to true north
//with the JS library mentioned below it would be something like
//bearing = userLoc.bearingTo(destionation);
//just two lines, the the sake of the example
double rotationInDegree = (bearing - heading); //the important line
rotationInDegree = fmod((rotationInDegree + 360), 360); //just to be on the safe side :-)
compassViewPerhapsAsImage.transform=CGAffineTransformMakeRotation(DegreesToRadians(rotationInDegree));
}
方位を計算するための良いリンク:
あまり正確である必要がない場合は、かなり簡単です。2 点間の角度を計算し、コンパスに角度を表示するだけです。(コードを投稿していないので、 のようなメソッドがあるかどうかはわかりませんがsetAngleForCompass
、そうすべきです!)これを試してください:
float dx = Longitude2 - Longitude1;
float dy = Latitude2 - Latitude1;
float angle = atan2(dy, dx);
// Set the angle of the compass here.
または、CMMotionManagerを使用してジャイロスコープにアクセスすることもできます。これにより、正しい方向を示すこともできます。(しゃれが意図されています!)それが役立つことを願っています!
また、場所への進行方向を計算する必要がありました。私が見つけた最良の方法は、余弦の球面法則を使用することでした。これを実装するために C 関数を作成しました。それらはgithub で入手できます。headerInDegrees 関数が必要なようです。これにより、真の見出しが得られます。
私の遅れた答えに感謝し、叫びます。私は特定の方向を示す矢印に取り組んでいます。私が今やったことは、この矢印にアニメーションを実行させることですが、私の問題は、iPhoneが「向かっている」のと同じ方向を(最初は)指している必要があるということです。
これまでの私のコード:
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{double heading = newHeading.trueHeading;
[self rotateCompass:heading];
}
- (void) rotateCompass: (double) degrees{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:2];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView commitAnimations];
compassRose.transform = CGAffineTransformMakeRotation(degrees);
}
緯度、経度、および見出しを表示するラベルを取得するための他のルーチンがあり、それは機能します。私の矢は理由もなく狂ったように回転します。矢印がtrueHeadingのように同じ方向を向くようにしたい。つまり、iPhoneのやり方で