でを にCoreLocationManager
設定できます。ただし、GPS はまだ完全ではありません。信号の品質、空のビュー (峡谷、都市) などによって、GPS から 5 ~ 100 m の精度が得られる場合があります。 desiredAccuracy
kCLLocationAccuracyBestForNavigation
注意すべきエラーのもう 1 つの原因として、GPS データが地図や道路ネットワーク データと同じ測地系 (例: WGS-84) にあることを確認してください。異なるデータムは、小さな (または大きな) エラーを追加する可能性があります。
固有の GPS とマッピング エラーを補正するために、ほとんどのターンバイターン方式ナビゲーション アプリは、「道路へのスナップ」と呼ばれるものを使用します。ユーザーが近くにいる道路を計算し、GPS の位置が道路から 30 m (注 1 を参照) 以内にあり、コース (または進行方向、注 2) が道路の方向から +/- 25 度以内にある場合、次の場所に「スナップ」します。道路。つまり、表示される位置ドットの位置と方向を変更して、ユーザーが正確に道路上にいて (GPS ポイントから道路上の最も近い地点を計算)、道路の経路に沿って進んでいる (その道路の方向を選択する) ことを示すようにします。が最も近い)。これには、曲線やいくつかの楽しい計算を含む詳細な道路形状データが必要ですが、取得すると非常にうまく機能します。
それらが道路からさらに離れている場合、または道路の進行方向と一致していない場合は、実際の GPS 位置が表示されます。これは非常にうまく機能しますが、これらのチェックを行うことができるように、道路ネットワーク ジオメトリ (または少なくとも目的地ジオメトリへのルート) が利用可能である必要があります。
horizontalAccuracy
注 1:から報告された値に基づいて公差を選択しますCLLocation
。
注 2: コンパスの方位 (修正済み) とコース (GPS から) をブレンドして、ユーザーの実際の方位を決定します。時速約 8 キロ以下では主にコンパスの方位を使用し、それ以上では主に GPS コース (より正確) を使用します。また、GPS コースを決定してコンパスの誤差を修正します。これにより、信号待ちや駐車場の速度が非常に遅い場合でも、正確な進行方向を表示できます。