osmbonuspack anwenden

  • Antworten:8
Wicki11
  • Forum-Beiträge: 103

12.11.2017, 19:50:33 via Website

Hallo !
Ich programmiere eine App, die Kartenmaterial von osmdroid verwenden soll, das funktioniert auch soweit. Speziell möchte ich nun osmbonuspack einbinden um zusätzliche Funktionalität (Weg in Karte zeichnen mit Hilfe von gesammelten GPS-Koordinaten) zu nutzen.
Mein Problem: ich kann den osmbonuspack nicht einbinden. Nach entsprechender Editierung der build.gradle erhalte ich Fehlermeldungen.
Ausschnitt aus der build.gradle:

dependencies {
compile files('lib/osmdroid-android-4.1.jar')
compile files('lib/osmdroid-packager-4.2.jar')
compile files('lib/slf4j-android-1.5.8.jar')

compile files('lib/osmbonuspack_v5.1')          //Variante 1
compile 'com.github.MKergall:osmbonuspack:6.4'  //Variante 2
compile(name: 'osmbonuspack_v6.4', ext: 'aar')  //Variante 3

}
Variante 1:
Error:Project app: Only Jar-type local dependencies are supported. Cannot handle: C:\Users\Ad....\app\lib\osmbonuspack_v5.1
Variante 2:
Error:(24, 13) Failed to resolve: com.github.MKergall:osmbonuspack:6.4
Variante 3:
Error:Failed to resolve: :osmbonuspack_v6.4:

Im lib-Ordner sind alle jar- bzw. aar-Files vorhanden.
Von den 3 Varianten war immer nur eine aktiv.

Bitte um Hilfe !

— geändert am 12.11.2017, 19:53:47

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

12.11.2017, 22:56:23 via App

Du musst die maven Url passend setzen und dann kannst du ein standard Compile nehmen mit dem vollen Package Namen:
https://github.com/MKergall/osmbonuspack/wiki/HowToInclude

Also Variante 2 mit passender Maven url im Projekt gradle file.

— geändert am 12.11.2017, 22:57:05

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Wicki11
  • Forum-Beiträge: 103

13.11.2017, 11:21:49 via Website

Dank für die Antwort.
Leider hat das Einfügen von maven { url "https://jitpack.io" }
nicht geholfen, es kommt nach wie vor der Fehler von Variante 2.
Ich bin mir allerdings nun nicht sicher, ob ich den Bonuspack überhaupt brauche für das Zeichnen einer Polyline in die Karte.
Habe auch schon mal nachgesehen bei
https://github.com/osmdroid/osmdroid/issues/260
aber der dort angegebene Beispielcode läuft bei mir nicht:

    Polyline line = new Polyline(getApplicationContext());
    line.setTitle("Central Park, NYC");
    line.setSubDescription(Polyline.class.getCanonicalName());
    line.setWidth(20f);
    List<GeoPoint> pts = new ArrayList<>();
    //here, we create a polygon, note that you need 5 points in order to make a closed polygon (rectangle)
    pts.add(new GeoPoint(40.796788, -73.949232));
    pts.add(new GeoPoint(40.796788, -73.981762));
    pts.add(new GeoPoint(40.768094, -73.981762));
    pts.add(new GeoPoint(40.768094, -73.949232));
    pts.add(new GeoPoint(40.796788, -73.949232));
    line.setPoints(pts);
    line.setGeodesic(true);
    line.setInfoWindow(new BasicInfoWindow(R.layout.bonuspack_bubble, mMapView));

Zeile 1 ist bei mir dann nur ohne Parameter möglich und das line-Object kennt die Methoden nicht. Wäre das mit Bonuspack anders ?
Ich bin nach so viel Probieren ziemlich verzweifelt.

Gruß Wicki

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.11.2017, 11:30:32 via App

Wie sieht denn deine Gradle bisher aus?
Dann kann ich das mal nachstellen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Wicki11
  • Forum-Beiträge: 103

13.11.2017, 13:50:47 via Website

buildscript {
repositories {
    jcenter()
    maven { url "https://jitpack.io" }
    flatDir {
        dirs 'lib'
    }
}
dependencies {
    classpath 'com.android.tools.build:gradle:2.2.2'
}

}
allprojects {
repositories {
jcenter()
}
}

und app-gradle:

apply plugin: 'com.android.application'

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "de.androidnewcomer.weginsbuero"
minSdkVersion 16
targetSdkVersion 21
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile files('lib/osmdroid-android-4.1.jar')
compile files('lib/osmdroid-packager-4.2.jar')
compile files('lib/slf4j-android-1.5.8.jar')
compile 'com.github.MKergall:osmbonuspack:6.4'
// compile files('lib/osmbonuspack_v5.1')
//only for OSMDroidAndMapsforge-version
compile files('lib/mapsforge-map-0.3.1-SNAPSHOT-jar-with-dependencies.jar')
}

die Version 6.4 enthält allerdings auch keine Klasse Polyline, die ich doch wohl brauche für das Weg-Zeichnen in die Karte.
Nur die Versionen 4.1, 4.2, 5.1 haben eine solche Klasse, wobei 5.1 im Verz. Meta-inf nur eine Manifest-Datei mit 2 Leerzeichen enthält.

Gruß Wicki

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.11.2017, 14:28:01 via App

Du solltest auf die Jar einbindungen verzichten und alles per Jcenter/maven Verweis einbinden. Dann weißt du auch dass du bei allen Libs die gleichen Versionen hast die zusammen passen...

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Wicki11
  • Forum-Beiträge: 103

13.11.2017, 16:24:58 via Website

Heißt das die compile-Anweisungen weglassen ?
Reicht der eine jcenter/maven Verweis aus oder brauche ich dazu noch andere (die ich nicht kenne) ?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.11.2017, 17:16:06 via App

Du brauchst die Compileanweisunngen die die Jar Dateien ersetzen. Einbindung via Gradle findet man meist auf der zugehörigen GitHub Seite.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Wicki11
  • Forum-Beiträge: 103

13.11.2017, 20:04:21 via Website

Wenn die compile-Anweisungen bleiben sollen, dann würden ja die angegebenen Files, die jetzt schon in der lib stehen wiederum geladen werden.
Außerdem hat das ja beim Bonuspack nicht geklappt.
Ich habe jetzt aber eine Lösung gefunden ohne Polyline. Ich wollte ja mit bereits vorhandenen GPS-Koordinaten (aus einer xml-Datei) den dazu passenden Weg in die Karte eintragen. Der Knackpunkt war:

PathOverlay myPath = new PathOverlay(Color.RED,this);
myPath.addPoints(lm); //lm: ArrayList mit den GeoPoints der Koordinaten
map.getOverlays().add(myPath);

Dazu habe ich die xml-Datei eingelesen und aus den Werten GeoPoint's gemacht.
Wie man an einen Bonuspack kommt ist nun nach wie vor ungklärt, aber den brauche ich jetzt ja nicht mehr.

Gruß Wicki

Antworten