2010-11-29 26 views
1

こんにちは皆さん 私はxcodeで位置座標を扱う際に助けが必要です。正確には、コンバージョンです。 私は携帯電話の地理的位置を使って受信した緯度と経度のCLLocationオブジェクトが正常に動作しています。しかし、私は変換を処理する問題を抱えています。iphone; mapkitで緯度/経度小数点値を扱う

iが

[defaults setObject:[NSString stringWithFormat:@"%.9lf",location.coordinate.latitude] forKey:@"lastKnownLat"]; 

を用いuserdefaultsにおける緯度及び長い値を格納していますが、位置の小数値が正確ではない勿論であり、そのは3.123456789または3.12345とすることができる - 後者の場合、値は3.123459999に変換され、私はマップ上で間違った位置を与えると推定します。

どうすればこの問題を回避できますか? 緯度/経度の値を格納してマップに表示するには、どのような方法が良いでしょうか? mapkitの は、3.12345と3.12345999の間に多くの相違がありますか?

おかげ

+0

3.12345と3.12345999の間に意味のある違いがあるかどうか尋ねました。赤道では、度が今までどおりに大きく、1度は約362775フィートまたは110574メートルです。 .000001を掛け合わせると、4.3インチまたは11センチになります。どちらも、GPSの確度をはるかに下回っています。確かにiPhoneのものです。 (確かに納得した人のために、6桁の小数点での誤差は、最終的に意味のある距離に滑り落ちる可能性があります) –

+0

ああ、私は洞察力のマテュー、確かに教育のために感謝しています。 – Veeru

答えて

4

NSUserDefaults特に浮動小数点値を保存するためのメソッドを持って、あなたはできるだけ多くの精度を維持するためにsetDouble:forKey:を使用することができます。

+0

NSUserDefaultsを使うつもりなら、これは間違いなく道のりです。 – jessecurry

+0

こんにちはjustin、私はそれを試みましたが、私は互換性のないタイプのエラーを取得する、[デフォルトのsetValueを使用しています:location.coordinate.latitude forKey:@ "lastKnownLat"] - 私は任意の変換を行う必要がありますか? – Veeru

+0

'setValue:forKey:'ではなく 'setDouble:forKey:'でなければなりません。後者は 'setObject:forKey:'と同じです。 –

0

自体がコアデータやsqliteの通過かもしれないが、あなたはkCLLocationAccuracyBestを使用する最も正確なデータを持っているデータを格納するための最良の方法。以下を参照してください(refreshLocは私のCLLocationManager変数です)。

refreshLoc = [[CLLocationManager alloc] init]; 
refreshLoc.delegate = self; 
refreshLoc.desiredAccuracy = kCLLocationAccuracyBest; 
refreshLoc.distanceFilter = kCLDistanceFilterNone; 
[refreshLoc startUpdatingLocation]; 
+0

ありがとうsqueezemylime、私はすでに正確な場所を持って、私はちょうどそれを格納し、できるだけ多くの精度でそれを取得する必要があります。 – Veeru

+0

次に正確度を10メートルに設定し、kcldistancefilter = oneを使用して – GhostRider

+0

GhostRiderに感謝します。もう一度ありがとう – Veeru

関連する問題