osmdroid を使って OpenStreetMap を Android に表示する
の続きです
osmbonuspack
osmdroid を 機能拡張するライブラリ。
Google Play にデモアプリが公開されている。
KML
Keyhole Markup Language の略で、
地理空間情報を XMLで記述したもの。
Google Earth や Google Maps などで使用されている。
KML をインポートするアプリを作る
osmbonuspack ライブラリを取り込む
build.gradle
allprojects {
repositories {
jcenter()
mavenCentral()
maven { url "https://jitpack.io" } // 追加する
}
app/build.gradle
dependencies {
compile 'com.github.MKergall:osmbonuspack:6.5.2' // 追加する
AndroidManifestに permission を追加する
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
MainAvtivity
private void loadKml() {
mContext = this;
new KmlLoader().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
class KmlLoader extends AsyncTask<Void, Void, Void> {
KmlDocument kmlDocument;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
protected Void doInBackground(Void... voids) {
kmlDocument = new KmlDocument();
kmlDocument.parseKMLStream(getResources().openRawResource( R.raw.kmlfile), null);
FolderOverlay kmlOverlay = (FolderOverlay)kmlDocument.mKmlRoot.buildOverlay(mMapView, null, null, kmlDocument);
mMapView.getOverlays().add(kmlOverlay);
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
mMapView.invalidate();
BoundingBox bb = kmlDocument.mKmlRoot.getBoundingBox();
mMapView.zoomToBoundingBox(bb, true);
mMapView.getController().setCenter(bb.getCenter());
super.onPostExecute(aVoid);
}
}
KML ファイルの入手と配置
下記から ParisTour.kml をダウンロードする
kmlfile.kml にリネームし、res/raw に配置する
スクリーンショット
github にソースを公開した