ロケーションベースのアプリケーションを作成しようとしていて、3日間デバッグしようとしていて、何が間違っているのか分からない...私のビューコントローラでは、デリゲート法による位置点(緯度および経度):ロケーションベースのアプリケーションデバッグ
CurrentPointの2つのLAT特性とlongit両方フロートを持つオブジェクトに過ぎない私が作成したPointxyクラスのオブジェクトである- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
currentPoint.lat=newLocation.coordinate.latitude*M_PI/180;
currentPoint.longit=newLocation.coordinate.longitude*M_PI/180;
}
。
次に、NSMutableArray(ptArray)とlong doubleというエリアというプロパティを持つShapeという別のクラスを作成しました。
私はその後、プリフォーム以下シェイプの方法でそれらを使用し、その後ptArrayに先のとがったオブジェクトの束を保存し、:
-(void)CalculateArea{
for (int i=0; i<[self NumberofPoints]-1; i++) {
Pointxy *pointi=[ptArray objectAtIndex:i];
Pointxy *pointiplus1=[ptArray objectAtIndex:i+1];
area-=6371.0*6371.0/2.0*(pointiplus1.longit-pointi.longit)*(2+sinf(pointiplus1.lat)+sinf(pointi.lat));
}
Pointxy *pointzero=[ptArray objectAtIndex:0];
Pointxy *pointlast=[ptArray objectAtIndex:[ptArray count]-1];
area-=6371.0*6371.0/2.0*(pointzero.longit-pointlast.longit)*(2+sinf(pointzero.lat)+sinf(pointlast.lat));
area=area*1000000.0;
}
私が午前問題は、私はこれを使用してUILabelで領域を表示しようとするということですコード:MyShapeはShapeオブジェクトであるとAreaLabelはUILabelです
NSString *AreaString=[[NSString alloc]initWithFormat:@"%Lf",MyShape.area];
[AreaLabel setText:AreaString];
、私はいつも0.0000が表示され、私は誰もが、なぜ見ることができないはず取得していますか?私はおそらくそれは私の変数との精度の問題だと思いますか? ありがとうございました
座標は度です。ラジアンから変換する必要はありません。あなたはNSLogを使って得た座標を印刷しようとしましたか? CalculateArea関数を既知の良いデータでユニットテストしましたか? – progrmr
私はそれをテストしませんでしたが、私のソースはnasaのペーパーです:http://trs-new.jpl.nasa.gov/dspace/bitstream/2014/40409/1/07-03.pdfので、間違いなくそれはまったくありません。たとえ同じミスがあったとしても、どうしてそれはいつもゼロを返すことができますか?私はそれをsinf()関数で使用するためにラジアンに変換しました...はい、実際に配列に格納されている座標をリアルタイムで表示するLabelがあります。 – Mppl
@ user611295:NASAの論文は間違いがないかもしれませんが、確認してテストする必要があるのはあなたのアルゴリズムの実装です。さらに、Objective-Cでは、エリアアルゴリズムコードが正しい場合でも、答えがゼロになる方法はたくさんあります。あなたが使用しているオブジェクトのいくつかがalloc + init-edされていない場合、それらはnilになり、no-opsになります。例:MyShapeがnilの場合、MyShape.areaはゼロを返します。 ptArrayがnilまたは空の場合、ゼロが返されます。 Progrmrが示唆するように、ロギングを追加して単体テストを行う必要があります。 – Anna