پـیش نیازها
- Package Name: نام پکیج اپلیکیشنی که قصد دارید در آن از SDK نقشهی نشان استفاده کنید. به عنوان مثال: org.neshan.sample
- SHA1 Fingerprint : فینگرپرینت SHA1 از کلیدهای مورد نیازتان که برای امضای APK اپلیکیشن خود استفاده میکنید. (کلید انتشار، دیباگ و سایر کلیدهایی که ممکن است در فرایند توسعه اپلیکیشن مورد نیاز شما باشد)
Release SHA1
windows
keytool.exe -list -v -keystore '/PATH/TO/KEY' -alias aliasKeyName
Linux/Mac
keytool -list -v -keystore '/PATH/TO/KEY' -alias aliasKeyName
برای ایجاد کلید Release باید از داخل نرم افزار Android Studio و از طریق منوی Build و با انتخاب گزینه Generate Signed Bundle / APK اقدام کنید. همچنین در دستورات فوق به جای عبارت ‘PATH/TO/KEY/’ آدرس کلید ایجاد شده را قرار دهید.
توجه: جهت استفاده از دستور فوق در سیستم عامل Windows باید ابتدا از طریق cmd در پوشه bin در محل نصب Java در سیستم خود قرار بگیرید
Debug SHA1
windows
keytool.exe -list -v -keystore '~\.android\debug.keystore' -alias androiddebugkey -storepass android -keypass android
Linux/Mac
keytool -list -v -keystore '~\.android\debug.keystore' -alias androiddebugkey -storepass android -keypass android
توجه: آدرس ~\.android\debug.keystore به آدرس keystore پیش فرض اندروید استودیو که برای دیباگ پروژه ها مورد استفاده قرار میگیرد اشاره دارد. این آدرس بر اساس سیستم عامل شما و محل نصب آن ممکن است متفاوت باشد اما معمولا مشابه با C:\Users\YOUR_USER\.android\debug.keystore است.
با داشتن Package Name و ایجاد SHA1 Fingerprint های مورد نیازتان کافی است از طریق لینک زیر در پنل توسعهدهندگان نشان به صورت کاملاً رایگان ثبتنام کنید و پس از ورود به پنل با انتخاب گزینه ایجاد کلید دسترسی پر پنجره ایجاد کلید دسترسی ابتدا یک نام برای کلید خود در نظر بگیرید، نوع کلید را اپلیکیشن موبایل – android انتخاب کنید و در فیلد نام پاندل، Package Name اپلیکیشنتان و در فیلد کلید امضاء هم SHA1 Fingerprint هایی که ساختید را وارد کنید. اگر بیش از یک فینگرپرینت دارید کافیست آنها با با کاما از هم جدا کنید.
با ذخیره این فرم یک فایل لایسنس (neshan.license) برای اپلیکیشن شما ایجاد میشود. این فایل را بر روی کامپیوتر خود دانلود کنید.
راهاندازی اپلیکیشن
build.gradle
پروژه: (project level)repositories {
//Add Neshan maven repo here
maven { url "https://dl.bintray.com/neshan/neshan-android-sdk" }
}
build.gradle
ماژول: (app module)dependencies {
//Neshan sdk library
implementation 'neshan-android-sdk:mobile-sdk:1.0.0'
}
build.gradle
ماژول قرار دهید:splits {
abi {
enable true
reset()
include 'armeabi-v7a'
universalApk false
}
}
این خط کد باعث میشود apk خروجی شما تنها از معماری های ذکر شده پشتیبانی کند. برای اطلاع از معماری های مختلف موجود در اندروید و همچنین موارد بیشتر راجع به abi filter به لینک ABI Managment مراجعه بفرمایید.
نکته:چنانچه برای پروژه خود از proguard استفاده میکنید حتماً باید پکیج org.neshan را در تنظیمات پروگارد خود مستثنی کنید. برای این منظور کافیست یک rule به صورت زیر در فایل proguard-rules.pro
ماژول قرار دهید:
-keep class org.neshan.** {*;}
AndroidManifest.xml
پروژه:<uses-permission android:name="android.permission.INTERNET"/>
raw
در resources
اندروید (در صورتی که این فولدر وجود ندارد آن را ایجاد کنید)

res/layout/activity_main.xml
و استفاده از المنت
org.neshan.ui.MapView
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<org.neshan.mapsdk.MapView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/map"/>
</android.support.constraint.ConstraintLayout>
۵-حالا میتـوانید از طریق تابع findViewById(R.id.map) به آبجکت MapView متصل شده و با نقشه کار کنید.
Java example
public class MainActivity extends AppCompatActivity {
private MapView map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
map = findViewById(R.id.map);
//set map focus position
LngLat focalPoint = new LngLat(51.33800,35.69997);
map.setFocalPointPosition(focalPoint, 0f);
map.setZoom(14f);
//add basemap layer
map.getLayers().add(NeshanServices.createBaseMap(NeshanMapStyle.STANDARD_DAY));
}
}
Kotlin example
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//set map focus position
map.setFocalPointPosition(LngLat(51.33800,35.69997), 0f)
map.setZoom(14f)
//add basemap layer
map.layers.add(NeshanServices.createBaseMap(NeshanMapStyle.STANDARD_DAY))
}
}