Пример за Osmdroid не работи

Искам да направя просто приложение за android с помощта на osmdroid, което просто трябва да показва карта. Включих и osmdroid-android-3.0.8.jar и slf4j-android-1.5.8.jar в проекта.

код:

package osmdemo.demo;

import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapController;
import org.osmdroid.views.MapView;

import android.app.Activity;
import android.os.Bundle;

public class Osm extends Activity {

private MapView         mMapView;
private MapController   mMapController;

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
           setContentView(R.layout.main);
       mMapView = (MapView) findViewById(R.id.mapview);
       mMapView.setTileSource(TileSourceFactory.MAPNIK);
       mMapView.setBuiltInZoomControls(true);
       mMapController = mMapView.getController();
       mMapController.setZoom(13);
       GeoPoint gPt = new GeoPoint(51500000, -150000);
       //Centre map near to Hyde Park Corner, London
       mMapController.setCenter(gPt);

   }
}

main.xml файл:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <org.osmdroid.views.MapView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:id="@+id/mapview"
        ></org.osmdroid.views.MapView>

</LinearLayout>

Манифестен файл:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="osmdemo.demo"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_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-feature android:name="android.hardware.location.network" />
<uses-feature android:name="android.hardware.location.gps" />   
<uses-feature android:name="android.hardware.wifi" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".Osm"
        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>

</manifest>

грешки:

05-16 17:29:32.612: W/dalvikvm(361): threadid=1: thread exiting with uncaught exception      (group=0x40015560)
05-16 17:29:32.702: E/AndroidRuntime(361): FATAL EXCEPTION: main
05-16 17:29:32.702: E/AndroidRuntime(361): java.lang.RuntimeException: Unable to start    activity ComponentInfo{osmdemo.demo/osmdemo.demo.Osm}: android.view.InflateException: Binary XML file line #7: Error inflating class org.osmdroid.views.MapView
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.os.Handler.dispatchMessage(Handler.java:99)
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.os.Looper.loop(Looper.java:123)
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.app.ActivityThread.main(ActivityThread.java:3683)
05-16 17:29:32.702: E/AndroidRuntime(361):  at java.lang.reflect.Method.invokeNative(Native Method)
05-16 17:29:32.702: E/AndroidRuntime(361):  at java.lang.reflect.Method.invoke(Method.java:507)
05-16 17:29:32.702: E/AndroidRuntime(361):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-16 17:29:32.702: E/AndroidRuntime(361):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-16 17:29:32.702: E/AndroidRuntime(361):  at dalvik.system.NativeStart.main(Native Method)
05-16 17:29:32.702: E/AndroidRuntime(361): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class org.osmdroid.views.MapView
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581)
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
05-16 17:29:32.702: E/AndroidRuntime(361):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.app.Activity.setContentView(Activity.java:1657)
05-16 17:29:32.702: E/AndroidRuntime(361):  at osmdemo.demo.Osm.onCreate(Osm.java:19)
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
05-16 17:29:32.702: E/AndroidRuntime(361):  ... 11 more
05-16 17:29:32.702: E/AndroidRuntime(361): Caused by: java.lang.ClassNotFoundException: org.osmdroid.views.MapView in loader dalvik.system.PathClassLoader[/data/app/osmdemo.demo-1.apk]
05-16 17:29:32.702: E/AndroidRuntime(361):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
05-16 17:29:32.702: E/AndroidRuntime(361):  at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
05-16 17:29:32.702: E/AndroidRuntime(361):  at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.view.LayoutInflater.createView(LayoutInflater.java:471)
05-16 17:29:32.702: E/AndroidRuntime(361):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570)
05-16 17:29:32.702: E/AndroidRuntime(361):  ... 20 more

Може ли някой да посочи къде бъркам?


person Suraj Sachdev    schedule 16.05.2012    source източник
comment
проверете заклинанието на org.osmdroid.views.MapView. Вероятно е грешно или пътят не е правилен   -  person Blackbelt    schedule 16.05.2012
comment
Може да се наложи да създадете папка „libs“ и да поставите вашите буркани там. (Последните инструменти за SDK изискват това) вижте stackoverflow.com/questions/10046298/   -  person NickT    schedule 16.05.2012
comment
Мисля, че проблемът ви е решен тук.   -  person l.mome    schedule 02.06.2019


Отговори (2)


поставяне на slf4j-android.jar и osmdroid-android.jar в папка „libs“ в проекта може да реши проблема. тествах

person Fido    schedule 29.12.2012

трябва да добавите допълнително разрешение като това във вашия манифестен файл:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
person harhouf    schedule 07.06.2012