0

サーバーから文字列形式のJSONで緯度と経度を取得しています。デフォルトのdoubleValue関数を使用して緯度と経度の値をdouble値に変換することで、この緯度と経度を使用していますが、この値を使用すると丸められます。では、文字列から doubleValue を取得するときに丸めを防ぐにはどうすればよいですか? これが私のコードです

  CLLocationCoordinate2D defaultLoc;

            defaultLoc.latitude = [[self.obj valueForKey:@"latitude"] doubleValue];
            defaultLoc.longitude = [[self.obj valueForKey:@"longitude"] doubleValue]; 

            NSLog(@"latitude : %f longitude : %f",defaultLoc.latitude,defaultLoc.longitude);
4

2 に答える 2

1

フォーマット指定子%fは、デフォルトで double 値を 6 桁に丸めます。%.10f必要な小数点以下の桁数としてフォーマットを指定してみてください。

于 2012-06-25T13:29:11.433 に答える
0

私が抱えていたのと同じ問題。JSONからの緯度経度データをNSStringとして持つことで解決しました。緯度と経度に相当する NSString を保持するオブジェクト クラスを作成します。

 NSString * lattodeletetest;
 NSString * longtodeletetest;
 lattodeletetest=[dict objectForKey:@"Lat"];
 longtodeletetest=[dict objectForKey:@"Lon"];
 NSArray *array2=[[NSArray alloc] initWithObjects:lattodeletetest,longtodeletetest, nil];
 NSString * coordinateString2=[array2 componentsJoinedByString:@","];
 safe.strLatLong=coordinateString2;

NSLog(@"%@",safe.strLatLong); //prints 12.758493847753464,71.488293492438438

このようにして、JSON から取得した緯度と経度を編集せずに保持することができます。

CLLOcationCoordinate2d として使用するには、次を使用します

 NSString *str=strLatLong;
 NSArray *array=[str componentsSeparatedByString:@","];
 lattodeletetest=[array objectAtIndex:0];
 longtodeletetest=[array objectAtIndex:1];
 CLLocationCoordinate2D location=CLLocationCoordinate2DMake([lattodeletetest doubleValue],[longtodeletetest doubleValue]);
于 2015-10-26T12:20:21.163 に答える