私は、Google の Directions API をソースとするルート案内の画面ごとのウォークスルーを表示する iPad アプリを構築しています。ほとんどのルート案内アプリケーションと同様に、CoreLocation を使用して物理空間でユーザーの進行状況を追跡し、画面を更新してユーザーを追跡したいと考えています。
私の最初のアイデアは、次のようなものです。
- 方向の各ステップで、対応するポリラインを取得します
- CoreLocation が更新されると、緯度/経度のペアがポリライン上のあるポイントのデルタ内にあるかどうかを確認します (つまり、ポリライン上のすべてのポイントを反復処理します)。
- 場所がポリライン内にある場合は、同じ画面にとどまります
- ポリライン上にない場合は、ユーザーが次のステップ (たとえば 10 ポイント) のためにポリラインのサブセットの同じデルタ内にいるかどうかを確認し、そうであれば次の画面に進みます。
- 次のポリライン上にない場合は、ルートを離れたことをユーザーに警告します。
これは非効率的で特に正確ではないようです...これを行うためのより良い方法はありますか?