Android アプリに OpenStreetMap の地図を追加したい時に使用したライブラリ「osmdroid
」のご紹介です。
Google Map を使っても良いのですが、こちらは仕様制限があるし、API キーを発行する必要があるなど、少し不便かなと思い、OpenStreetMap を採用しました。
また、以前に開発したアプリでもこの「osmdroid
」を使ったことがあったので、Google Map より導入が簡単かな?と思ったというのも理由の一つです。
「osmdroid」の GitHub ページはこちらから。
GitHub – osmdroid/osmdroid: OpenStreetMap-Tools for Android
https://github.com/osmdroid/osmdroid
導入方法ですが、まず build.gradle
に下記を追加します。
repositories { mavenCentral() // この行を追加 } dependencies { implementation 'org.osmdroid:osmdroid-android:5.0.1' // この行を追加 }
上記の作業が終わったら、「Sync Now
」を実行します。
次に、地図を表示したいページのレイアウトファイルを開き、下記を追加します。
<org.osmdroid.views.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="500dp" />
id
、layout_width
、layout_height
はそれぞれ任意の値を設定してください。
上記を追加したら Activity ファイルを開き、地図を表示したいタイミングで下記を実行してください。
大抵は、onCreate
内で問題ないはずです。
org.osmdroid.tileprovider.constants.OpenStreetMapTileProviderConstants.setUserAgentValue(BuildConfig.APPLICATION_ID); // 地図を表示する MapView mapView = findViewById(R.id.map); mapView.setTileSource(TileSourceFactory.MAPNIK); mapView.setBuiltInZoomControls(true); mapView.setMultiTouchControls(true); IMapController mapController = mapView.getController(); // 地図のズームレベルを指定 mapController.setZoom(15); // 地図の初期位置を指定 GeoPoint startPoint = new GeoPoint([緯度], [経度]); mapController.setCenter(startPoint);
上記まで終わったら、アプリを実行してください。
エラーなどが発生していなければ、問題なく地図が表示されているはずです!
まだ地図を表示するくらいしかしていませんが、とりあえずマップを表示させたい!というくらいであれば、導入が簡単な「osmdroid
」はおすすめです。
が、現在その次のマップにピンを表示するところで躓いています…。
公式サイトに載っている方法をまるっとコピー&ペーストしているだけなのですが、Android Studio に引数の型が違う!とか、書き方が違う!と怒られてしまっています。
こちらの問題については、分かり次第、また記事にまとめさせていただきます。
以上、Android アプリで地図を表示できるライブラリ「osmdroid
」のご紹介でした。
ご参考になれば幸いです。