SwiftUIで標高を取得するアプリを作っています。
また、家の階を移動しても(1階から2階へ移動した)数値に変化が見られなかった
import UIKit
質問はSwiftUIだけどUIKitのコードが記載されていますね。
「該当のソースコード」をどのように(SwiftUIとして)確認しているのかによっても回答が変わってくるかもしれませんね・・
緯度経度の内容は情報が多いですが、標高はあまり情報がない印象ですね。
iOSシミュレーターでは確認できなそうですし・・(できるのでしたら教えてください)
ドキュメントには次のような記載もあります。
精度の問題はどうでしょうか?
More accurate location data also takes more time to become available.
After you request high-accuracy location data, your app might still get data with a lower accuracy for a period of time. During the time it takes to determine the location within the requested accuracy, the location service keeps providing the data that’s available, even though that data isn’t as accurate as your app requested. Your app receives more accurate location data as that data becomes available.
(機械翻訳)また、精度の高い位置情報データは、利用可能になるまでに時間がかかります。
高精度の位置情報データを要求した後も、アプリは一定期間、精度の低いデータを取得する可能性があります。位置情報サービスは、要求された精度内で位置を特定するのにかかる時間の間、利用可能なデータを提供し続けますが、そのデータはアプリが要求したほど正確ではありません。データが利用可能になると、アプリはより正確な位置情報を受け取ります。
desiredAccuracy | Apple Developer Documentation
verticalAccuracy
プロパティから精度を確認することができるみたいですので、アプリの項目としてこのプロパティも表示してみて確認してみたらいかがでしょうか。
verticalAccuracy | Apple Developer Documentation
あまり関係ないかもしれませんが、locationManager.desiredAccuracy
はkCLLocationAccuracyBest
よりkCLLocationAccuracyBestForNavigation
の方が精度が高いみたいですので(余計にバッテリーを消費するみたいですが)、こちらの値も試してみるとか?
kCLLocationAccuracyBestForNavigation | Apple Developer Documentation
追記です。
コメントありがとうございます。
その後、ドキュメントを見ていたら、高度について2種類あるみたいでしたので追記します。
一つは平均海面からの高度で、もう一つはWGS84楕円体からの高度のようです。
*下の方に測地系についての引用画像を貼り付けておきますが、後者の楕円体の方がよりシンプルに(単純に)モデル化した(より大雑把な)感じになるのかなと思います。
altitude
The altitude above mean sea level associated with a location, measured in meters.
(機械翻訳)ある場所の平均海面からの高度をメートル単位で表したもの。
altitude | Apple Developer Documentation
ellipsoidalAltitude
The altitude as a height above the World Geodetic System 1984 (WGS84) ellipsoid, measured in meters.
(機械翻訳)世界測地系1984(WGS84)楕円体からの高さで、単位はメートル。
ellipsoidalAltitude | Apple Developer Documentation
ジオイドと地球楕円体の引用です。
地球は山や谷など凹凸が存在し、このままの形状を基準とすると非常に複雑になります。そのため地球の凹凸をシンプルな形状にモデル化する必要があります。代表的な地球の形状のモデルにジオイドがあります。ジオイドは水が地球の重力や遠心力に逆らわず上を覆ったと仮定した場合の海洋面形状です。
しかし、モデル化されたジオイドにも起伏が存在し、不規則な形状です。そこで、ジオイドをシンプルなモデルで単純化し地球の形に近似した回転楕円体である地球楕円体が考案されました。
測地系 | ESRIジャパン座標系/空間参照 | GIS 基礎解説 | ESRIジャパン
lastLocation.verticalAccuracy
プロパティも表示してみてコメントでどのような値になっているか教えてもらえると助かります。
四捨五入についての追記です。
コメントありがとうございます。
同じ結果が取得できたようで良かったです。
これを四捨五入してvarに代入することは可能でしょうか?
四捨五入はStringのイニシャライザでフォーマット文字列を指定すると良いかなと思います。
下の例は2なので小数点以下2桁まで表示される感じです。
swift
1String(format: "%.2f", altitude)
init(format:_:) | Apple Developer Documentation
fprintf
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/08/13 09:39
2024/08/13 14:00
2024/08/13 14:33
退会済みユーザー
2024/08/13 14:49