Skip to main content

[osmdroid] 任意の地点が含まれるように地図をズームアウトする

ハッカソン期間中、実装にすこし苦労したので書いておくことにしました。

環境

  • 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)

のように呼び出してあげれば、アニメーションを伴ったマップズームアウト処理を実現することができます。

参考文献

Atria

大学生個人開発者| AtCoder(茶) / C# / VBA /その他趣味いっぱい