سبد (0)

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

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

اندورید به ما اجازه می دهد تا از Google maps در برنامه ی خود استفاده کنیم. می توانید موقعیت ها و یا مسیرهای مختلف و غیره را روی نقشه نشان دهید. همچنین می توانید به انتخاب  خود، نقشه را نیز به دلخواه خود تنظیم کنید.

گوگل این قابلیت را با مجموعه ی خدمات google play ارائه می دهد، که باید آن را به طور خارجی دانلود کنید. پس از دانلود کردن باید آن را با پروژه ی خود کامل کنید. در انتها باید برنامه ی خود را با گوگل از طریق google console  کامل کنید. این مسئله به طور کامل در مثال توضیح داده می شود.

Google map  - فایل فعالیت

گوگل برنامه ی GoogleMap  و  MapFragment apiرا برای کامل کردن نقشه روی برنامه ی اندروید شما ارائه می دهد. برای استفاده از Google map باید یک شئ از آن را ایجاد کنید و از لی اوت فایل xml مرجع بگیرید. ترکیب آن در زیر آورده شده است.

 

GoogleMap googleMap;
googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

Google map- فایل لی اوت

اکنون باید قطعه ی نقشه را به فایل  xml اضافه کنید. ترکیب آن در زیر آورده شده است.

 

<fragment
   android:id="@+id/map"
   android:name="com.google.android.gms.maps.MapFragment"
   android:layout_width="match_parent"
   android:layout_height="match_parent"/>

Google map – فایل Android Manifest

کار دیگری که باید انجام دهید، افزودن اجازه به همراه کلید Google Map API در فایل AndroidManifest.XML  می باشد. ترکیب آن در زیر آورده شده است.

 

<!--Permissions-->

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<!--Google MAP API key-->

<meta-data
   android:name="com.google.android.maps.v2.API_KEY"
   android:value="AIzaSyDKymeBXNeiFWY5jRUejv6zItpmr2MVyQ0" />       

شخصی کردن Google map

شما به راحتی می توانید Google map  را از طریق ویو پیش فرض آن به دلخواه خود درآورید و آن را به آن شکلی که مایلید تغییر دهید.

افزودن نشان گذار(marker)

شما می توانید یک نشان گذار با یک متن روی نقشه قرار دهید که نشان دهنده ی موقعیت شما روی نقشه می باشد. این کار از طریق روش addMarker()انجام می شود. ترکیب آن در زیر آورده شده است.

 

final LatLng TutorialsPoint = new LatLng(21 , 57);
Marker TP = googleMap.addMarker(new MarkerOptions().position(TutorialsPoint).title("TutorialsPoint"));

تغییر نوع نقشه

شما می توانید نوع نقشه را نیز تغییر دهید. چهار نوع نقشه متفاوت وجود دارد که هرکدام یک ویو متفاوت از نقشه ارائه می دهند. این نقشه ها عبارتند از Normal و Hybrid و Satellite و terrain. شما می توانید از آنها مانند زیر استفاده کنید.

 

googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
googleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);

فعال و غیرفعال کردن زوم

شما همچنین می توانید حرکات زوم را با فرخوانی روش setZoomControlsEnabled(boolean)فعال یا غیرفعال کنید. رکیب آن در زیر آورده شده است.

 

googleMap.getUiSettings().setZoomGesturesEnabled(true);

علاوه بر شخصی سازی، روش های دیگری در کلاس Google map وجود دارد که بیشتر در امر شخصی سازی Google map کمک می کنند. لیست آنها را می توانید در زیر ببینید.

  • addCircle(CircleOptions options)

    این روش به نقشه یک دوره اضافه می کند.
  • addPolygon(PolygonOptions options)

    این روش به نقشه چند ضلعی اضافه می کند.
  • addTileOverlay(TileOverlayOptions options)

    این روش به نقشه tile overlay اضافه می کند.
  • animateCamera(CameraUpdate update)

    این روش طبق آپدیت با یک انیمیشن نقشه را حرکت می دهد.
  • clear()

    این روش هر چیزی را از نقشه حذف می کند.
  • getMyLocation()

    این روش آخرین موقعیت نمایش داده شده ی یوزر را بازمی گرداند.
  • moveCamera(CameraUpdate update)

    این روش طبق دستورالعمل های تعریف شده در آپدیت، موقعیت دوربین را تغییر می دهد.
  • setTrafficEnabled(boolean enabled)

    این روش ترافیک لایه را خاموش یا روشن می کند.
  • snapshot(GoogleMap.SnapshotReadyCallback callback)

    این روش یک عکس فوری از نقشه می گیرد.
  • stopAnimation()

    این روش انیمیشن در حال پیشرفت دوربین را متوقف می کند.

مثال

این مثال استفاده از کلاس Google map را توضیح می دهد. این مثال یک برنامه ی پایه ایجاد می کند که مسیریابی روی نقشه را برای شما میسر می کند.

برای آزمایش با این مثال می توانید آن را روی دستگاه واقعی یا یک شبیه ساز اجرا کنید.

  • Google maps را روی برنامه ی خود کامل کنید.
  • برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان  GoogleMaps  تحت بسته ی com.example.googlemaps نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target SDK و Compile With در آخرین ورژن Android SDK هستند تا از سطوح بالاتر API استفاده کنید.
  • فایل src/MainActivity.java را برای افزودن کد لازم تغییر دهید.
  • res/layout/activity_main را برای افزودن مولفه های مربوط به XML تغییر دهید.
  • AndroidManifest.xml را برای افزودن اجازه ی اینترنت تغییر دهید.
  • برنامه را اجرا کنید و یک دستگاه اجرایی اندروید انتخاب کنید، برنامه را روی آن نصب کرده و نتایج را بررسی کنید.

کامل سازی Google maps

 کامل سازی google maps روی برنامه های شما اساساً دارای این چهار مرحله می باشد.

1)      Google Play Services SDK را دانلود و تنظیم کنید.

2)     کلید API را از صفحه ی گوگل ه دست آورید.

3)     تنظیمات Android Manifest را مشخص کنید.

دانلود و تنظیم Google Play Services SDK

نصب SDK گوگل سرویس

با باز کردن پنجره و سپس انتخاب Android SDK manager می توانید SDK manager را باز کنید.

تب extras را پیدا کرده و سپس Google play services را انتخاب کنید و روی install this package را کلیک کنید.

وارد کردن SDK به eclipse

پس از این که SDK را دانلود کردید روی تب file کلیک کنید و گزینه ی import option  را انتخاب کنید. کد برنامه ی اندروید موجود را انتخاب کرده و روی OK کلیک کنید. روی فولدر اندروید و سپس فولدر sdk خود کلیک کنید. در فولدر sdk فولدر extras را باز کنید. فولدر گوگل را باز کنید و google play services را انتخاب کنید.

پیکربندی پروژه  بوسیله ی SDK

پس از اینکه SDK را وارد کردید، آن را به پرژه ی خود اضافه کنید. برای این کار روی eclipse کلیک راست کرده و properties را انتخاب کنید. اندروید را از سمت چپ انتخاب کنید و add را از سمت راست زیر پنل انتخاب کرده و آن را به پروژه اضافه کنید.

به دست آوردن کلید API

این بخش به دو مرحله تقسیم می شود. اول اینکه باید یک کلید SHA1 fingerprint از کامپیوتر خود گرفته و سپس کلید API نقشه را از صفحه ی گوگل بگیرید.

گرفتن گواهینامه از Keytool

شما به یک گواهی نیاز دارید تا برای گرفتن کلید API برای نقشه، آن را به صفحه ی گوگل ارائه دهید. پنجره ی فرمان را باز کرده و در مسیری که java jre قرار گرفته بروید. اکنون این فرمان را تایپ کنید.

 

keytool -list -v -alias androiddebugkey -keystore %%Your path%% -storepass android -keypass android

قسمت (percentage) فرمان را با مسیری جایگزین کنید که عبارت است  انتخاب تب window و انتخاب تب preferences و سپس انتخاب گزینه ی build  زیر android در قسمت چپ.

مسیر debug keystore پیش فرض را کپی کنید و آن را جایگزین فرمان کرده و سپس روی enter ضربه بزنید.

کلید SHA1 را کپی کنید زیر آن را در مرحله ی بعد نیاز دارید.

گرفتن کلید از صفحه ی گوگل

صفحه ی گوگل را باز کرده و با کلیک کردن روی new project وارد شوید. روی services کلیک کنید و سپس از طریق تب left وارد Google Maps Android API v2 شوید. شما باید آن ها را روشن کنید.

دوباره به تب left بازگردید و API access را انتخاب کنید و روی create new android key کلیک کنید. حالا کلیدی را که کپی کرده بودید در اینجا پیست کنید، یک نقطه ویرگول قرار داده، نام پروژه ی خود را پیست کنید و روی creat کلیک کنید.

اکنون کلید API را که توسط اندروید به شما داده شده بود، کپی کنید زیرا که باید آن را در manifest file پیست کنید.

تعیین تنظیمات Android manifest

آخرین مرحله افزودن کلید API به برنامه می باشد.  Manifest file را باز کرده و این کد را درست قبل از بستن نشان برنامه در آن جای دهید.

 

<meta-data
   android:name="com.google.android.maps.v2.API_KEY"
   android:value="API_KEY"/>

در خط دوم API_KEY را جایگزین کلید api کنید. کار شما تمام شده است. لازم است دستواراتی را نیز به manifest وارد کنید که در manifest file  ارائه شده است.

افزودن Google maps به برنامه ها

در زیر محتوای تغییریافته ی فایل فعالیت اصلی را نشاهده می کنید.

 

package com.example.googlemaps;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

import android.os.Bundle;
import android.app.Activity;
import android.widget.Toast;

public class MainActivity extends Activity {
   static final LatLng TutorialsPoint = new LatLng(21 , 57);
   private GoogleMap googleMap;
   
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      try {
         if (googleMap == null) {
            googleMap = ((MapFragment) getFragmentManager().
            findFragmentById(R.id.map)).getMap();
         }
         googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
         Marker TP = googleMap.addMarker(new MarkerOptions().
         position(TutorialsPoint).title("TutorialsPoint"));
      }
      catch (Exception e) {
         e.printStackTrace();
      }
   }
}

در زیر محتوای فایل res/layout/activity_main.xml را مشاهده می کنید.

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent" >

   <fragment
      android:id="@+id/map"
      android:name="com.google.android.gms.maps.MapFragment"
      android:layout_width="match_parent"
      android:layout_height="match_parent"/>

</RelativeLayout>

در زیر محتوای فایل AndroidManifest.xmlرا مشاهده می کنید.

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.googlemaps"
   android:versionCode="1"
   android:versionName="1.0" >

   <uses-permission android:name="com.example.googlemaps.permission.MAPS_RECEIVE" />

   <uses-sdk
      android:minSdkVersion="12"
      android:targetSdkVersion="17" />
   <permission
      android:name="com.example.googlemaps.permission.MAPS_RECEIVE"
      android:protectionLevel="signature" />


   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="com.google.android.providers.
      gsf.permission.
      READ_GSERVICES" />
   
   <uses-permission android:name="android.permission.
      WRITE_EXTERNAL_STORAGE" />

   <uses-permission android:name="android.permission.
      ACCESS_COARSE_LOCATION" />
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

   <uses-feature
      android:glEsVersion="0x00020000"
      android:required="true" />

   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.googlemaps.MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
      <meta-data
         android:name="com.google.android.maps.v2.API_KEY"
         android:value="AIzaSyDKymeBXNeiFWY5jRUejv6zItpmr2MVyQ0" />

   </application>

</manifest>

اجازه بدهید برنامه ی GoogleMaps را اجرا کنیم. فرض می کنیم که دستگاه موبایل اندروید خود را به کامپیوتر متصل کرده اید. برای اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکن Run از تولبار کلیک کنید.

حال آنچه لازم است انجام دهید، ضربه زدن روی نشان بادکنک است تا متن را مشاهده کنید.

 

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه