iPhoneの地図アプリを作りたいです。私は、iPhone がユーザーの特定の場所の詳細な経度と緯度の座標を提供できることを知っています。Google マップやその他のマッピング アプリケーションは、どのようにしてユーザーの位置を地図上の位置に変換しますか? いろいろと検討事項がありそうです。たとえば、マップが回転している場合はどうなるでしょうか。スケーリングや考慮すべきことがたくさんあるように思えます。Google マップは、どのようにしてユーザーの現在地を地図上の特定の地点に変換し、その正確さを (2 ~ 3 メートル以内) にしていますか。答えや助けをいただければ幸いです。ありがとう!
3 に答える
Googleマップアプリケーションは知っています:
- Googleマップサービスが地図をタイルに分割した方法
- すべてのマップタイルのサイズと場所(緯度/経度)
- ユーザーが選択したズームレベル
- デバイス画面のサイズ
- デバイスによって報告された位置の緯度と経度
この情報を使用して、マップアプリケーションは、ユーザーの場所が画面の中央(または必要な場所)に表示されるように、画面に表示する必要のあるタイルを見つけるための簡単な線形演算を実行できます。
あなたの場所を決定するとき、あなたの見出し/回転は無関係です。あなたの位置はGPS衛星から受信したデータに基づいています。複数の衛星があり、それぞれからの距離に基づいて、位置が1ポイントに絞り込まれます。このポイントには、非常に詳細な座標のペアがあります(小数点を10桁超えたと考えてください)。Googleが提供する地図上のすべてのポイントは、座標のペアに関連付けられています。そのため、携帯電話が座標を把握すると、地図上のどこに対応しているかを確認し、地図上のどこに配置します。他のすべての場所も座標に基づいています。
現在、地図には、見出しに基づいて地図が回転する設定もあります。この機能は、電話に内蔵されているコンパスを使用します。iPhoneには3GS以来コンパスが内蔵されていると思います。
つまり、Googleが提供する地図は、Googleが提供する巨大で非常に高解像度の画像であり、この画像のすべてのピクセル(またはそれ以下)が座標のペアに対応していると考えてください。座標が決定されたら、ズームレベルに関係なく、その画像の対応するポイントに配置されます。
Googleマップは、ユーザーが接続しているモバイルネットワークタワーの場所を含む、いくつかの異なる方法を使用してユーザーの場所を取得します(Googleは、これをより正確にするために2つ以上のタワーの三角測量を使用する場合がありますhttp://techcrunch.com/ 2007/11/28 / google-mobile-maps-pinpoints-your-location-without-gps /)、ユーザーがWiFiおよびGPSに接続している場合のISPの場所。
最も正確なのはGPSで、Googleに緯度と経度の座標を(正しく覚えていれば)10メートル以内で正確に提供します。Googleマップシステムのすべての画像にはGPS座標が保存されているため、Googleが行う必要があるのは、適切な地図画像を取得して、画像上にユーザーの位置をプロットすることだけです。
これがあなたの求めていることだと思いますが、何かについてもっと詳しく知りたい場合や、私が誤解している場合は、コメントを残してください。この回答を変更します。
編集
iPhoneでGoogleマップを使用するための良い紹介を提供するこのページを参照してくださいhttps://developers.google.com/maps/articles/tutorial-iphone
ユーザーの場所を示すために地図上にマーカーを配置するためのアルゴリズムをコーディングする必要はありません。GoogleMapsAPIで関数/メソッドを呼び出すだけで、すべての作業が自動的に行われます。Google Maps APIのドキュメントをよく調べて、必要なものを見つけることをお勧めします(前のリンクにもあります)。
これはあなたが求めているコードの正確なスニペットかもしれないと思います: https ://developers.google.com/maps/documentation/javascript/overlays#Markers