Skobbler地图在Android上保持黑色

时间:2016-02-12 09:48:35

标签: android android-support-library skmaps

我遵循了Skobbler的Android教程,可以在这里找到:

http://developer.skobbler.com/getting-started/android

在我的应用程序中,我无法使用SKMapFragment,因为我需要一个android.support.v4.app.Fragment用于我的其余应用程序逻辑。这就是我选择SKMapViewHolder方法的原因。

我的片段代码如下所示:

import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.skobbler.ngx.map.SKAnnotation;
import com.skobbler.ngx.map.SKCoordinateRegion;
import com.skobbler.ngx.map.SKMapCustomPOI;
import com.skobbler.ngx.map.SKMapPOI;
import com.skobbler.ngx.map.SKMapSurfaceListener;
import com.skobbler.ngx.map.SKMapSurfaceView;
import com.skobbler.ngx.map.SKMapViewHolder;
import com.skobbler.ngx.map.SKPOICluster;
import com.skobbler.ngx.map.SKScreenPoint;

import nl.afdelingapps.android.boschxp.R;
import nl.afdelingapps.android.boschxp.view.BaseFragment;
import nl.afdelingapps.android.boschxp.helper.SkobblerHelper;

/**
 * Created by bartburg on 27-10-2015.
 */
public class RouteMapFragment extends BaseFragment implements SKMapSurfaceListener {

    private SKMapViewHolder mapViewGroup;
    private SKMapSurfaceView mapView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View inflatedView = inflater.inflate(R.layout.fragment_skobbler, container, false);
        mapViewGroup = (SKMapViewHolder) inflatedView.findViewById(R.id.map_surface_holder);
        mapViewGroup.setMapSurfaceListener(this);
        return inflatedView;
    }

    @Override
    public boolean getForceRefresh() {
        return false;
    }

    @Override
    public String getFragmentName() {
        return "CenterMapFragment";
    }

    @Override
    public void onPause() {
        super.onPause();
        if (mapView != null) {
            mapView.onPause();
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        if (mapView != null) {
            mapView.onResume();
        }
    }

    @Override
    public void onActionPan() {

    }

    @Override
    public void onActionZoom() {

    }

    @Override
    public void onSurfaceCreated(SKMapViewHolder skMapViewHolder) {
        mapView = mapViewGroup.getMapSurfaceView();
        mapView.applySettingsFromFile(SkobblerHelper.getMapCreatorFilePath(getContext()));
    }

    @Override
    public void onMapRegionChanged(SKCoordinateRegion skCoordinateRegion) {

    }

    @Override
    public void onMapRegionChangeStarted(SKCoordinateRegion skCoordinateRegion) {

    }

    @Override
    public void onMapRegionChangeEnded(SKCoordinateRegion skCoordinateRegion) {

    }

    @Override
    public void onDoubleTap(SKScreenPoint skScreenPoint) {

    }

    @Override
    public void onSingleTap(SKScreenPoint skScreenPoint) {

    }

    @Override
    public void onRotateMap() {

    }

    @Override
    public void onLongPress(SKScreenPoint skScreenPoint) {

    }

    @Override
    public void onInternetConnectionNeeded() {

    }

    @Override
    public void onMapActionDown(SKScreenPoint skScreenPoint) {

    }

    @Override
    public void onMapActionUp(SKScreenPoint skScreenPoint) {

    }

    @Override
    public void onPOIClusterSelected(SKPOICluster skpoiCluster) {

    }

    @Override
    public void onMapPOISelected(SKMapPOI skMapPOI) {

    }

    @Override
    public void onAnnotationSelected(SKAnnotation skAnnotation) {

    }

    @Override
    public void onCustomPOISelected(SKMapCustomPOI skMapCustomPOI) {

    }

    @Override
    public void onCompassSelected() {

    }

    @Override
    public void onCurrentPositionSelected() {

    }

    @Override
    public void onObjectSelected(int i) {

    }

    @Override
    public void onInternationalisationCalled(int i) {

    }

    @Override
    public void onBoundingBoxImageRendered(int i) {

    }

    @Override
    public void onGLInitializationError(String s) {

    }

    @Override
    public void onScreenshotReady(Bitmap bitmap) {

    }
}

真的没什么特别的。 BaseFragmentis只是一个没有花哨的抽象类。实际上只是一些谷歌分析的东西和日志记录的东西,仅此而已,它尚未用于此片段。

我的片段xml就像在教程中一样:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:mapbox="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="?attr/actionBarSize">
    <com.skobbler.ngx.map.SKMapViewHolder
        android:id="@+id/map_surface_holder"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
</RelativeLayout>

我遵循每一步,地图保持黑色。我在Android 4.3,5.1和6.0上测试了这个。它在所有屏幕上都是黑色的。

我的gradle文件:

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'com.google.gms.google-services'

repositories {
    maven { url 'https://maven.fabric.io/public' }
}


android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "nl.afdelingapps.android.boschxp"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 11
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
        transitive = true;
    }
    compile('com.mapbox.mapboxsdk:mapbox-android-sdk:2.2.0@aar') {
        transitive = true
    }
    compile 'com.qozix:tileview:2.0.8'
    compile 'com.google.code.gson:gson:2.4'
    compile 'com.google.android.gms:play-services-panorama:8.3.0'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:support-v4:23.1.1'
    compile 'uk.co.chrisjenx:calligraphy:2.1.0'
    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'com.github.ksoichiro:android-observablescrollview:1.6.0'
    compile 'com.google.android.gms:play-services-analytics:8.3.0'
    compile 'de.greenrobot:eventbus:2.4.0'
    compile 'de.greenrobot:java-common:2.2.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.estimote:sdk:0.9.4@aar'
    compile project(':widgetsystem')
}

repositories {
    maven {
        url "http://developer.skobbler.com/maven/"
    }
}

configurations {
    skobblersdk
}
dependencies {
    skobblersdk "com.skobbler.ngx:SKMaps:2.5.1"
    compile files('libs/SKMaps.jar')
}

def assetsPath = "$projectDir/src/main/assets"
def libsPath = "$projectDir/libs"
def jniLibsPath = "$projectDir/src/main/jniLibs"

dependencies {
    compile 'com.android.support:support-v4:23.+'
}
dependencies {
    compile 'com.android.support:support-v4:23.+'
}
task installSKMaps << {
    copy {
        from configurations.skobblersdk
        into "$buildDir/skobblersdk-down"
        rename { String fileName -> 'skobblersdkres.zip' }
    }
    copy {
        from zipTree("$buildDir/skobblersdk-down/skobblersdkres.zip")
        into "$buildDir/skobblersdk-down"
    }
    delete("$jniLibsPath",
            "$assetsPath/SKMaps.zip",
            "$libsPath/SKMaps.jar")
    copy {
        from "${buildDir}/skobblersdk-down/jniLibs"
        into "$jniLibsPath"
    }
    copy {
        from "${buildDir}/skobblersdk-down/SKMaps.zip"
        into "$assetsPath"
    }
    copy {
        from "${buildDir}/skobblersdk-down/SKMaps.jar"
        into "$libsPath"
    }
    delete("$buildDir/skobblersdk-down")
    delete(configurations.skobblersdk)
}

截图:

screenshot black skobbler map

我的日志显示背景中至少出现了问题:

02-12 11:15:18.207 16085-16085/nl.afdelingapps.android.boschxp W/System.err: java.lang.NoSuchMethodError: no non-static method "Lcom/skobbler/ngx/positioner/SKPosition;.getLatitude()D"
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at java.lang.Runtime.nativeLoad(Native Method)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at java.lang.Runtime.doLoad(Runtime.java:435)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at java.lang.Runtime.loadLibrary(Runtime.java:370)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at java.lang.System.loadLibrary(System.java:1076)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at com.skobbler.ngx.SKMaps.<clinit>(SourceFile:59)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at nl.afdelingapps.android.boschxp.view.activity.MainActivity.onMapTexturesPrepared(MainActivity.java:349)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at com.skobbler.ngx.SKPrepareMapTextureThread$1.run(SourceFile:92)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at android.os.Looper.loop(Looper.java:148)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5417)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp D/SkobblerNG: gJVM registerMethod error for ClassSKPosition :: getLatitude ()D
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err: java.lang.NoSuchMethodError: no non-static method "Lcom/skobbler/ngx/positioner/SKPosition;.getLongitude()D"
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at java.lang.Runtime.nativeLoad(Native Method)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at java.lang.Runtime.doLoad(Runtime.java:435)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at java.lang.Runtime.loadLibrary(Runtime.java:370)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at java.lang.System.loadLibrary(System.java:1076)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at com.skobbler.ngx.SKMaps.<clinit>(SourceFile:59)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at nl.afdelingapps.android.boschxp.view.activity.MainActivity.onMapTexturesPrepared(MainActivity.java:349)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at com.skobbler.ngx.SKPrepareMapTextureThread$1.run(SourceFile:92)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
02-12 11:15:18.212 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
02-12 11:15:18.213 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at android.os.Looper.loop(Looper.java:148)
02-12 11:15:18.213 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5417)
02-12 11:15:18.213 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
02-12 11:15:18.213 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
02-12 11:15:18.213 16085-16085/nl.afdelingapps.android.boschxp W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

0 个答案:

没有答案