osmbonuspack을 사용하여 Android의 OpenStreetMap지도로 KML 가져 오기

osmdroid를 사용하여 OpenStreetMap을 Android에 표시
계속됩니다.

osmbonuspack



osmdroid를 확장하는 라이브러리.

Google Play에 데모 앱이 게시되었습니다.

KML



Keyhole Markup Language의 약자로,
지리 공간 정보를 XML로 기술한 것.
Google 어스, 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에 소스를 게시했습니다.

좋은 웹페이지 즐겨찾기