我正在嘗試使用Osmdroid和Osmdroidbonuspack編寫一個簡單的Android應用程序,但是我的問題已經超過了第一階段,下面是他們教程中的基本示例。無法使用OSMBonusPack庫解析KML文件
我能夠使用osmdroid顯示地圖,但是當我嘗試使用osmdroidbonuspack解析url時,解析器總是返回false。
我使用的URL是「巴黎之旅」一本教程: http://code.google.com/p/osmbonuspack/wiki/Tutorial_3
,我知道存在該文件作爲鏈接的作品。
在我的主要活動的代碼是:
mMapView = (MapView) findViewById(R.id.mapview);
mMapView.setTileSource(TileSourceFactory.MAPNIK);
mMapView.setBuiltInZoomControls(true);
mMapController = (MapController) mMapView.getController();
mMapController.setZoom(2);
KmlDocument kmlDocument = new KmlDocument();
boolean ok = kmlDocument.parseUrl("http://mapsengine.google.com/map/kml?mid=z6IJfj90QEd4.kUUY9FoHFRdE");
我要補充,我注意到一些logcat中聯網相關的錯誤:
02-13 23:28:28.177: W/System.err(1652): android.os.NetworkOnMainThreadException
02-13 23:28:28.181: W/System.err(1652): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
02-13 23:28:28.181: W/System.err(1652): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
02-13 23:28:28.185: W/System.err(1652): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
02-13 23:28:28.185: W/System.err(1652): at java.net.InetAddress.getAllByName(InetAddress.java:214)
02-13 23:28:28.185: W/System.err(1652): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
02-13 23:28:28.185: W/System.err(1652): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
02-13 23:28:28.189: W/System.err(1652): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
02-13 23:28:28.189: W/System.err(1652): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
02-13 23:28:28.189: W/System.err(1652): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
02-13 23:28:28.193: W/System.err(1652): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
02-13 23:28:28.193: W/System.err(1652): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
02-13 23:28:28.193: W/System.err(1652): at org.osmdroid.bonuspack.utils.HttpConnection.doGet(HttpConnection.java:75)
02-13 23:28:28.197: W/System.err(1652): at org.osmdroid.bonuspack.kml.KmlDocument.parseUrl(KmlDocument.java:231)
02-13 23:28:28.197: W/System.err(1652): at com.example.testosmdroid.MainActivity.onCreate(MainActivity.java:29)
02-13 23:28:28.197: W/System.err(1652): at android.app.Activity.performCreate(Activity.java:5008)
02-13 23:28:28.197: W/System.err(1652): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
02-13 23:28:28.201: W/System.err(1652): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
02-13 23:28:28.201: W/System.err(1652): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
02-13 23:28:28.201: W/System.err(1652): at android.app.ActivityThread.access$600(ActivityThread.java:130)
02-13 23:28:28.201: W/System.err(1652): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
02-13 23:28:28.205: W/System.err(1652): at android.os.Handler.dispatchMessage(Handler.java:99)
02-13 23:28:28.205: W/System.err(1652): at android.os.Looper.loop(Looper.java:137)
02-13 23:28:28.205: W/System.err(1652): at android.app.ActivityThread.main(ActivityThread.java:4745)
02-13 23:28:28.209: W/System.err(1652): at java.lang.reflect.Method.invokeNative(Native Method)
02-13 23:28:28.209: W/System.err(1652): at java.lang.reflect.Method.invoke(Method.java:511)
02-13 23:28:28.209: W/System.err(1652): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
02-13 23:28:28.213: W/System.err(1652): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-13 23:28:28.213: W/System.err(1652): at dalvik.system.NativeStart.main(Native Method)
在MainActivity誤差在的parseURL線發生。 當我看到這個我想這可能是由於權限問題,但我只是檢查,似乎我擁有所有必需的權限,至少根據這個教程:http://code.google.com/p/osmdroid/wiki/Prerequisites
我AndroidManifest低於:
<?xml version="1.0" encoding="utf-8"?>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.testosmdroid.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>