LoginSignup
1
1

More than 5 years have passed since last update.

osmbonuspack を使ってAndroid の OpenStreetMap 地図に KML をインポートする

Last updated at Posted at 2019-02-06

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 に配置する

スクリーンショット

paris_tour.png

github にソースを公開した

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1