浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【Android】アプリにOpenStreetMapを追加する「osmdroid」ライブラリ

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" />

idlayout_widthlayout_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」のご紹介でした。
ご参考になれば幸いです。

  • この記事いいね! (0)