میخوای وارد بازار کار بشی و محصولات خودت رو بفرشی همین الان ثبت نام کن
0

توابع کتابخانه ای Google Maps v2 / Google Maps Android API v2

با سلام خدمت همه دوستان در این مقاله قصد داریم در مورد توابع کتابخانه ای Google Maps v2 / Google Maps Android API v2 آموزش دهیم

شرکت گوگل یک کتابخانه از طریق سرویس Google play در اختیار توسعه دهنده قرار می دهد که امکان استفاده ی آسان از Google Maps و پیاده سازی توابع آن در پروژه ی اندرویدی را به راحتی فراهم می آورد. مبحث حاضر از توابع کتابخانه ای v2 Google Maps استفاده می کند که نسبت به ورژن قبلی آن از قابلیت های بیشتری برخوردار است.

کتابخانه ی مزبور دو کلاس به ترتیب به نام های com.google.android.gms.maps.MapFragment و MapView ارائه می دهد که کامپوننت نقشه را برای کاربر نمایش می دهد.

برای استفاده از Google Maps لازم است اطلاعات اضافی به فایل تنظیمات اپلیکیشن AndroidManifest.xml اضافه نمایید.

 

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.vogella.android.maps">
<!--
The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
Google Maps Android API v2, but you must specify either coarse or fine
location permissions for the 'MyLocation' functionality.
-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--
The API key for Google Maps-based APIs is defined as a string resource.
(See the file "res/values/google_maps_api.xml").
Note that the API key is linked to the encryption key used to sign the APK.
You need a different API key for each encryption key, including the release key that is used to
sign the APK for publishing.
You can define the keys for the debug and release targets in src/debug/ and src/release/.
-->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

 


کلاس MapFragment

کلاس MapFragment از کلاس Fragment ارث بری کرده و توابعی جهت مدیریت چرخه ی حیات (life cycle) و سرویس های لازم برای نمایش ویجت (کامپوننت رابط کاربری) GoogleMap را فراهم می آورد. GoogleMap کلاسی است که وظیفه ی نمایش نقشه را بر عهده دارد. MapFragment برای دسترسی به این کلاس متد getMap() را فراخوانی می کند.

کلاس LatLng پل ارتباطی جهت تعامل با کلاس GoogleView خواهد بود.

 


درج marker (نشانه) بر روی نقشه

می توانید با استفاده از کلاس Marker ، بر روی نقشه نشانه درج نمایید. این قابلیت بسیار منعطف بوده و قابل تنظیم می باشد.

کد زیر مثالی عملی را به نمایش می گذارد.

 

public class MainActivity extends Activity {
static final LatLng HAMBURG = new LatLng(53.558, 9.927);
static final LatLng KIEL = new LatLng(53.551, 9.993);
private GoogleMap map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
.getMap();
if (map!=null){
Marker hamburg = map.addMarker(new MarkerOptions().position(HAMBURG)
.title("Hamburg"));
Marker kiel = map.addMarker(new MarkerOptions()
.position(KIEL)
.title("Kiel")
.snippet("Kiel is cool")
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_launcher)));
}
}

 

می توانید بر روی نمونه ی ساخته شده از روی کلاس GoogleMap، توابع listener برای گوش دادن به marker های درج شده بر روی نقشه الصاق نمایید. کلاس OnMarkerClickListener یک متد به نام onMarkerClicked(Marker) در اختیار توسعه دهنده قرار می دهد که به مجرد کلیک کاربر بر روی marker فراخوانی می شود.

 


تنظیم اختصاصی GoogleMap

می توان GoogleMap را مطابق نیاز به صورت اختصاصی تنظیم کرد.

کد زیر از وبسایت اصلی گوگل اقتباس شده است.

 

 

static final LatLng HAMBURG = new LatLng(53.558, 9.927);
static final LatLng KIEL = new LatLng(53.551, 9.993);
private GoogleMap map;
... // Obtain the map from a MapFragment or MapView.
//Move the camera instantly to hamburg with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(HAMBURG, 15));
// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);

نرم افزار شبیه ساز محیط اندروید (emulator) و Google Maps

لازم است یک شبیه ساز مبتنی بر توابع کتابخانه ای Google ایجاد نمایید. با استفاده از این شبیه ساز می توانید بعده ها Google map و دیگر سرویس های ادغام شدنی نظیر Google Play Service را تست نمایید.

 



نصب Google Play service

دانلود Google Play Service

Android SDK Manager را باز کرده و Google Play Services را نصب نمایید.

 

نصب Google Play service
نصب Google Play service

 

 

اکنون می توانید dependency مورد نیاز را به فایل app/build.gradle اضافه نمایید.

 

 

compile 'com.google.android.gms:play-services:9.8.0'

 


ساخت و دریافت کلید شناسگر Google Map (key)

جهت استفاده از Google Maps لازم است یک شناسه گر برنامه ی فراخواننده یا API key معتبر Google ایجاد نمایید. این کلید رایگان بوده و می توان از آن برای تمامی اپلیکیشن هایی که توابع کتابخانه ای Maps را فراخوانی می کنند، استفاده نمایید. در خصوص استفاده از این کلید محدودیتی وجود نداشته و قابلیت پشتیبانی از بی نهایت کاربر را دارد.

برای دریافت این کلید بایستی از طریق Google APIs Console اقدام نمایید. جهت دریافت کلید لازم است اسم پکیج و امضای دیجیتالی (signature key) اپلیکیشن را ارائه نمایید.

منظور از امضای دیجیتالی همان کلیدی است که اپلیکیشن اندروید خود را به هنگام خروجی گرفتن، توزیع و نصب (مرحله ی deployment) با آن امضا و به طور منحصر بفرد نشانه گذاری می کنید. در حین توسعه ی اپلیکیشن، سیستم کامپایل و اجرای پروژه های اندرویدی (build system)، به صورت خودکار یک debug key تولید کرده و از آن جهت اشکال زدایی اپلیکیشن و اینکه کاربر مجبور نباشد هر بار برای ترجمه و اجرای برنامه امضای الکترونیکی را وارد کند، استفاده می نماید.

 


ایجاد SHA-1 برای امضای دیجیتالی (Signature key)

debug key یا کلید اشکال زدایی و کامپایل پروژه تحت آدرس userhome/.android/debug.keystore قابل دسترسی می باشد.

SHA-1 (الگوریتم درهم سازی ایمن): تابع درهم سازی در مبحث رمزنگاری است.

برای ساخت SHA-1 ویژه ی debug keystore (keystore برای اعتبارسنجی شناسه ی برنامه نویس و توسعه دهنده ی اپلیکیشن استفاده می شود.)، می توانید دستور keytool را از JDK نصب شده اجرا کنید.

 

keytool -list -v -alias androiddebugkey \
-keystore <path_to_debug_keystore>debug.keystore \
-storepass android -keypass android
</path_to_debug_keystore>

 

لازم است خروجی SHA-1 را برای استفاده در آینده کپی نمایید.

 


ثبت نام در Google APIs Console

شما بایستی در Google APIs Console ثبت و اعلان نمایید که می خواهید از توابع Google Maps برای پروژه ی اندرویدی خود استفاده نمایید. از منوی My Project المان Services را انتخاب نمایید.

ثبت نام در Google APIs Console
ثبت نام در Google APIs Console

 

Google Maps Android API v2 را فعال نمایید.

ثبت نام در Google APIs Console
ثبت نام در Google APIs Console

 


ساخت کلید و امضای دیجیتالی برای اپلیکیشن

شما بایستی بعده ها اپلیکیشن را از طریق اسم پکیج در کنسول همراه با fingerprint SHA-1 امضای دیجیتالی (signature key) ثبت نمایید (fingerprint: دنباله‌ای کوتاه از بایت‌ها می‌باشد که برای تایید اعتبار و یا جستجوی کلید عمومی/public key طولانی تر استفاده می‌شود. اثرانگشت‌ها با اعمال یک تابع درهم‌ساز رمزنگارانه/hash function بر روی یک کلید عمومی ایجاد می‌گردند. از آنجا که اثر انگشت‌ها نسبت به کلیدهای مربوطه کوتاه تر هستند، می‌توان از آن‌ها به منظور ساده سازی برخی وظایف مدیریت کلید استفاده نمود . رمزنگاری کلید عمومی یا رمزنگاری نامتقارن روشی از رمزنگاری است که کلید مورد استفاده برای رمزگذاری با کلید مربوط برای رمزگشایی با هم متفاوت است.(. برای این منظور پس از کلیک بر روی المان مربوطه، آیتم API Access را انتخاب نمایید. سپس بر روی المان Create new Android key… کلیک کنید.

ساخت کلید و امضای دیجیتالی برای اپلیکیشن
ساخت کلید و امضای دیجیتالی برای اپلیکیشن

 

حال در کادر مربوطه SHA-1 fingerprint و اسم پکیج اپلیکیشن خود را وارد کرده و آن ها را با ویرگول از هم جدا نمایید. برای مثال همان طور که در تصویر زیر مشاهده می کنید، پکیج com.vogella.android.locationapi.maps در کادر مربوطه درج شده است.

 

ساخت کلید و امضای دیجیتالی برای اپلیکیشن
ساخت کلید و امضای دیجیتالی برای اپلیکیشن

 

 

در این آموزش یک اپلیکیشن اندرویدی می نویسید که GoogleMap را از طریق یک fragment برای کاربر نمایش می دهد.

نصب Google Play Service

لازم است Google Play Service را نصب نمایید.

ایجاد پروژه ی اندرویدی

یک پروژه ی اندرویدی به نام com.vogella.android.maps بر اساس قالب آماده ی (template) Google Maps Activity ایجاد نمایید.

بررسی فایل تنظیمات پروژه

محتوای فایل manifest را چک کرده و مطمئن شوید که مجوزهای زیر توسط template نام برده در آن اعلان شده اند.

 

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.vogella.android.maps">
<!--
The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
Google Maps Android API v2, but you must specify either coarse or fine
location permissions for the 'MyLocation' functionality.
-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--
The API key for Google Maps-based APIs is defined as a string resource.
(See the file "res/values/google_maps_api.xml").
Note that the API key is linked to the encryption key used to sign the APK.
You need a different API key for each encryption key, including the release key that is used to
sign the APK for publishing.
You can define the keys for the debug and release targets in src/debug/ and src/release/.
-->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

template مورد نظر یک فایل به نام google_maps_api.xml ایجاد کرده است. این فایل حاوی دستور العمل هایی در خصوص نحوه ی ایجاد Google Maps API key می باشد.

پس از دریافت API key اپلیکیشن، این کلید را در فایل google_maps_api.xml وارد نمایید.

تنظیم فایل layout

در این مثال از کلاس MapFragment استفاده می کنیم. محتوای فایل layout خود را به صورت زیر ویرایش نمایید.

 

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.vogella.android.maps.MapsActivity"
/>

ویرایش Activity

پیاده سازی کلاس activity خود را به صورت زیر ویرایش نمایید.

 

package com.vogella.android.maps;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
public class MainActivity extends Activity {
static final LatLng HAMBURG = new LatLng(53.558, 9.927);
static final LatLng KIEL = new LatLng(53.551, 9.993);
private GoogleMap map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
.getMap();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}

 

توجه: برای اجرای این مثال لازم است قابلیت پشتیبانی از multidex را فعال نمایید.

android {
compileSdkVersion 25
buildToolsVersion "24.0.0"
defaultConfig {
applicationId "com.vogella.android.maps"
minSdkVersion 23
targetSdkVersion 25
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

 

 

اجرا و تست اپلیکیشن

اپلیکیشن را اجرا کرده و تست نمایید. با توجه به منطق برنامه باید بتوانید بر روی Map حرکت کرده و قسمت هایی از آن بزرگ نمایی / کوچک نمایی کنید.

 

 


امیدواریم آموزش توابع کتابخانه ای Google Maps v2 / Google Maps Android API v2 در اندروید نیز برای شما مفید واقع

آموزش Google Maps در اندروید به همراه نمونه کد

باشد و ادامه آموزش برنامه نویسی اندروید رو دنبال کنید . برای مطالعه پست‌ها بیشتر ، ما را در مدرسه کدنویسی تلگرام  و یا در تی جوان اینستاگرام دنبال کنید.

نظراتتون رو زیر همین پست با ما به اشتراک بگذارید.
ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

×

سلام کاربر عزیز

هر سوالی دارید در این بخش هستیم تا شما رو راهنمائی کنیم

روی لوگومون کلیک کنید

× چطور میتونم کمکتون کنم؟