この記事は旧ブログサービスからの移植記事です。
表示がおかしい場合があります、ご了承ください。
ハッカソン期間中、実装にすこし苦労したので書いておくことにしました。
環境
- Android Studio Arctic Fox | 2020.3.1 Patch 3
- osmdroid-android: 6.1.11
実現したいこと
表示しているマーカー(ピン)がすべて収まるように画面を自動でズームアウトする
結論
osmdroid から提供されているメソッド zoomToBoundingBox を利用します。
実際に利用しているコードは以下のリンクから確認することができます。
(ハッカソン用に作成した雑なプロジェクトファイルではありますが、参考になるはずです)
OSMDroidSpike/MainActivity.kt at main · Atria64/OSMDroidSpike
詳しく
zoomToBoundingBoxを利用すると、与えたBoundingBox型の値に対応してマップをズームアウトすることができます。
そのため、zoomToBoundingBoxを利用するためにはBoundingBox型の値を用意する必要があります。
表示しているマーカー(ピン)らの緯度経度情報を格納したGeoPoint型の集合(任意の地点の集合)からBoundingBox型の値を生成するサンプルコードがこちらです。
また、zoomToBoundingBoxの利用方法ですがこれは
MapView.zoomToBoundingBox(
緯度経度で表現した地図上の範囲:BoundingBox,
アニメーションをするかどうか:boolean
)
というように利用します。
今回の “getArea()” を利用する場合は
MapView.zoomToBoundingBox(getArea(),true)
のように呼び出してあげれば、アニメーションを伴ったマップズームアウト処理を実現することができます。