• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps Unable to use SKMaps in android studio

Hello,
I am trying to use SK maps SDK for Android, but I am facing some problems. I have followed as guided on this website :http://developer.skobbler.com/getting-started/android for integrating SDK in Android but still I am making mistake somewhere it seems. The problem is: As soon I launch the app, the first activity is correctly starting but as soon as SK maps library is initialised and the Map activity is created, the app crashes without showing any error. Here is my Initialization code:
Java:
public class Map_initialization extends AppCompatActivity implements SKMapsInitializationListener {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout);
    SKMaps.getInstance().initializeSKMaps(getApplication(),this);
}

@Override
public void onLibraryInitialized(boolean b) {  ///once maps initialized then go to map activity
    Intent intent=new Intent(this,MainActivity.class);
    startActivity(intent);
}
}

Here is my Map Activity Code: Here map is created.

Java:
public class MainActivity extends AppCompatActivity implements SKMapSurfaceListener {

double lat;
double lng;
float zoom_level=0;
String Location="19.875692,75.353020";
// get the annotation object
SKAnnotation new_loc = new SKAnnotation(10); //marker which can be visible on map


/**
* Surface view for displaying the map
*/
private SKMapSurfaceView mapView;

/**
* the view that holds the map view
*/
SKMapViewHolder mapHolder;

// get the callout view object from the map holder
SKCalloutView mapPopup = mapHolder.getCalloutView();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mapHolder = (SKMapViewHolder) findViewById(R.id.map_surface_holder);
}
@Override
protected void onDestroy() {
    super.onDestroy();
    SKMaps.getInstance().destroySKMaps();
}

public void Show_Location()
{

    lat=Double.valueOf(Location.substring(0,9));//extracting latitude
    lng=Double.valueOf(Location.substring(10,Location.length()));//extracting longitude
    zoom_level=16;
    new_loc.setAnnotationType(SKAnnotation.SK_ANNOTATION_TYPE_BLUE);
    new_loc.setLocation(new SKCoordinate(lat,lng));
    mapView.animateToZoomLevel(zoom_level);
    mapView.animateToLocation(new SKCoordinate(lat,lng),1000);
    mapView.addAnnotation(new_loc, SKAnimationSettings.ANIMATION_PIN_DROP);//adding marker

    // set the callout view’s background color
    mapPopup.setViewColor(Color.argb(255, 200, 200, 255));
    mapPopup.showAtLocation(new SKCoordinate(lat,lng),true);
}

@Override
protected void onPause() {
    super.onPause();
    mapHolder.onPause();
}

@Override
protected void onResume() {
    super.onResume();
    mapHolder.onResume();
}

@Override
public void onActionPan() {
    zoom_level--;
    mapView.setZoom(zoom_level);
}

@Override
public void onActionZoom() {
    zoom_level++;
    mapView.setZoom(zoom_level);
}

@Override
public void onSurfaceCreated(SKMapViewHolder skMapViewHolder) { //on map surface created
    mapView = mapHolder.getMapSurfaceView();
    mapView.getMapSettings().setMapPoiIconsShown(true);
    mapView.getMapSettings().setMapPanningEnabled(true);
    mapView.getMapSettings().setMapZoomingEnabled(true);
}

@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) {
    Toast.makeText(getApplicationContext(),"ERROR:"+s,Toast.LENGTH_LONG).show();

}

@Override
public void onScreenshotReady(Bitmap bitmap) {

}
}

Here is my gradle for app:

Code:
buildscript {
repositories {
    mavenCentral()
}
dependencies {
    classpath 'com.android.tools.build:gradle:2.1.2'
}
}
//apply plugin: 'java'
repositories {
maven {
    url "http://developer.skobbler.com/maven/"
}
}

configurations {
skobblersdk
}
apply plugin: 'com.android.application'
android {

compileSdkVersion 23
buildToolsVersion "24.0.0"
defaultConfig {
    applicationId "com.example.ahirrao.gps"
    minSdkVersion 16
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'),      
    'proguard-rules.pro'
        signingConfig signingConfigs.config
    }

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
skobblersdk "com.skobbler.ngx:SKMaps:3.0.0"
compile files('libs/SKMaps.jar')
}

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

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/"
    into "$assetsPath"
}
copy {
    from "${buildDir}/skobblersdk-down/SKMaps.jar"
    into "$libsPath"
}
delete("$buildDir/skobblersdk-down")
delete(configurations.skobblersdk)
}

This is my Layout for map:
Code:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.skobbler.ngx.map.SKMapViewHolder
    android:id="@+id/map_surface_holder"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />



</RelativeLayout>

And on the above website of Skobbler, they have given the code by using JAVA plugin in gradle but I am not able to use it as it is not compatible with android plugin. Please guide me.
 

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones