背景として... Android Google Map v2を使用してネイティブ Android アプリを開発しています。私の要件は次のとおりです。
要件 #1: 2 つの LatLng で区切られた特定の地域の衛星画像を表示します。これらの LatLngs は、表示したい長方形のマップ エリアの「中心線エンドポイント」と呼ばれるものを表していることに注意してください (マップ エリアの北東と南東の角とは対照的に)。わかりやすくするために、表示したいマップ エリアはゴルフ コースの 1 つのホールであり、2 つの LatLng は特定のゴルフ ホールのティーの場所とピン/ホールの場所を表しています。
これで問題ありません....この部分の解決策はかなり簡単です。次のコードを使用して、適切な境界でマップを表示します。
public void onCameraChange(CameraPosition arg0) {
// Determine the bounds and then move camera
LatLngBounds bounds = new LatLngBounds.Builder()
.include(TPS_PIN)
.include(TPS_HOLE)
.build();
googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 10));
要件 #2:マップ イメージを回転させて、ポートレート モードでティーの場所が電話の画面の下部にあり、ピン/穴の場所が電話の画面の上部にくるようにします。
マップ画像を回転させるメソッド (CameraPosition.Builder で「ベアリング」パラメータを使用) がありますが、これを LatLngBounds メソッド (上記のように) と組み合わせて使用して、私の目標 (マップ画像をバインドして回転させる) を達成することはできないようです。 )。著者が同様の目的を持っている別の StackOverflow 投稿 ( Android は V2 newLatLngBounds をベアリングにマップします) がありますが、残念ながら、提供された回答は問題を解決しません。ただし、応答者は、提案された回答が機能しない場合 (および機能しない場合)、次のアプローチを提案しました。
「投影を使用してターゲットを計算し、自分でズームする必要がある場合があるため、上記の最初の moveCamera() 呼び出しの一部として境界を設定できます。」
残念ながら、これ以上の詳細は提供されていません。Projection を見てきましたが、目標を達成するために使用する方法がわかりません。
誰かが私の目標を達成する方法を見ていますか (バウンドと回転)? おそらく、Projection を使用してこれを行う方法はありますか? 使用できる LatLng ポイントが 2 つしかないことを思い出してください (Tee の場所と Pin/hole の場所の LatLng)。穴全体が画面に収まるようにする必要があります。
上で述べたように、電話が Potrait モードのときに T シャツが電話画面の下部にあり、穴/ピンの位置が画面の上部にあるように、画像を回転する方法を決定する必要があります。ここでも、穴全体 (ティーとピン/穴) がスクリーンに収まるようにする必要があります。特定の LatLng を画面の下部に、別の LatLng を電話画面の上部に「固定」する方法はありますか?
繰り返しますが、Android Maps v2 API で動作するソリューションが必要です。
高レベルの「方向性」の提案であっても、どんな提案でも大歓迎です。うまくいけば、「方向性のある」提案が、私が点をつなぐのに十分な詳細を持っていることを願っています。