Implementing osmdroid
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.osmdroid"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<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-feature android:name="android.hardware.location.network" />
<uses-feature android:name="android.hardware.location.gps" />
<uses-feature android:name="android.hardware.wifi" />
<application
......... "as it is"
</application>
</manifest>
Τροποποίηση του βασικου αρχείου xml
main.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<org.osmdroid.views.MapView
android:id="@+id/openmapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</FrameLayout>
Βιβλιοθήκες που πρέπει να προστεθουν στο πρόγραμμα στο φάκελο libs είναι οι εξής:
osmdroid-android-3.0.10.jar
slf4j-android-1.5.8.jar
osmdroid-third-party-3.0.10.jar
osmdroid-packager-3.0.10.jar
Στο andoid studio η μορφή που πρέπει να έχει το αρχείο build.gradle ειναι η εξής:
apply plugin: 'com.android.application'
android {
//Εδώ μπορείται να το πειράξεται και να στοχεύεται σε διαφορετικές εκδόσεις sdk
compileSdkVersion 21
buildToolsVersion '22.0.0'
defaultConfig {
applicationId "com.example.osmdroid"
minSdkVersion 21
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile files('libs/slf4j-android-1.5.8.jar')
compile files('libs/osmdroid-android-3.0.10.jar')
compile files('libs/osmdroid-packager-3.0.10.jar')
compile files('libs/osmdroid-third-party-3.0.10.jar')
}
Αυτο είναι το αρχειο main.java στην συγκεκριμένη περίπτωση κανει extend μια Activity αν χρειάζεται να κάνει extend ενα Fragment χρειάζεται ελάχιστα διαφορετικός κώδικας.
package com.example.osmdroid;
import android.annotation.TargetApi; import android.os.Build; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import org.osmdroid.tileprovider.tilesource.TileSourceFactory; import org.osmdroid.views.MapController; import org.osmdroid.views.MapView; import org.osmdroid.views.overlay.MyLocationOverlay; public class main extends Activity { private MapView openMapView; private MapController mMapController; private MyLocationOverlay myLocationoverlay; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView = (R.id.main); openMapView = (MapView)this.findViewById(R.id.openmapview); openMapView.setUseSafeCanvas(true); openMapView.setMultiTouchControls(true); //the way we get the tiles
openMapView.setTileSource(TileSourceFactory.MAPQUESTOSM); mMapController = (MapController) openMapView.getController(); openMapView.setBuiltInZoomControls(true); mMapController.setZoom(14); // My Location Overlay
myLocationoverlay = new MyLocationOverlay(getActivity(),
openMapView); myLocationoverlay.enableMyLocation(); // not on by default myLocationoverlay.enableCompass(); myLocationoverlay.setDrawAccuracyEnabled(true); myLocationoverlay.runOnFirstFix(new Runnable() { public void run() { mMapController.animateTo
(myLocationoverlay.getMyLocation()); } }); openMapView.getOverlays().add(myLocationoverlay); } @Override public void onResume() { // TODO Auto-generated method stub super.onResume(); myLocationoverlay.enableMyLocation(); myLocationoverlay.enableFollowLocation(); } @Override public void onPause() { // TODO Auto-generated method stub super.onPause(); myLocationoverlay.disableMyLocation(); myLocationoverlay.disableFollowLocation(); } }
Donate for this tutorial
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου