آموزش کار با نقشه گوگل(google map) در برنامه های اندرویدی (اندروید استودیو)

توضیح کلی درباره دوره:

این دوره یه دوره نسبتا کوتاه هست که توی اون به آموزش استفاده از گوگل مپ توی برنامه اندرویدی خودمون پرداختیم.
همون طور که میدونید استفاده از نقشه توی برنامه های مربوط خیلی میتونه مفید و کاربردی باشه و تعامل بیشتری با کاربر برقرار میکنه…
بنده مهدی میرزاده مدرس این دوره هستم و سعی کردم قسمت های مفید گوگل مپ رو برای شما دوستان عزیز آموزش بدم…
امیدوارم از این دوره نهایت استفاده و لذت رو ببرید…
هرگونه انتقاد و نظری نسبت به دوره داشتید حتما با من درمیون بذارید تا در آموزش های بعدی اونها رو رفع کنیم…

دانلود APK برنامه:
دانلود برنامه نهایی

خرید کل دوره بصورت یکجا + سورس رایگان:

سورس برنامه:

۳-نمایش نقشه در برنامه

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

دانلود قسمت ۳ ـ نمایش نقشه در برنامه

۲- بررسی سرویس گوگل مپ

توی این قسمت بررسی میکنیم که سرویس قابل استفاده هست یا به ارورر برخوردیم و یا کلا سرویس نیست!
و اگه سرویس ما موجود بود قابل استفاده هست برای کار های بعدی…

دانلود قسمت دوم ـ بررسی سرویس گوگل مپ

۱- دریافت api key از گوگل و دادن پرمیشن‌ها:

توی این قسمت درخواست api key میدیم و اونو داخل برنامه میذاریم تا در آینده به مشکلی برنخوریم
درواقع api key واسط برنامه ما و سرویس گوگل هست
و یک سری پرمیشن ها رو که برای ادامه کار نیاز داریم داخل برنامه اضافه میکنیم

دانلود قسمت اول ـ نمایش نقشه در برنامه

۶- رفتن به مختصات خاص بوسیله نام مکان ها

توی این قسمت با استفاده از نام مکان های مختلف مثل “تهران” به اون مکان میریم و این کارو با استفاده از کلاس GeoCoder انجام میدیم که کار های تبدیل رو انجام میده…

۵- رفتن به مختصات خاص

توی این قسمت با استفاده از latitude and longitude هر نقطه از جهان که درواقع همون طول و عرض جغرافیایی هستند میتونیم به اون نقطه ها بریم و زوم خودمون تا اون نقطه رو هم مشخص کنیم

۴- ساختن شی از مپ:

توی این قسمت برای این که بتونیم از مپ استفاده های بیشتری داشته باشیم باید یک شی از اون بسازیم و با استفاده از اون شی کار های مربوطه رو انجام بدیم

۹- دریافت آپدیت و تغییرات مسیر جاری

توی این قسمت تغییرات لوکیشن خودمون دریافت میکنیم
همون طور که میدونید ما همیشه توی یک مکان ثابت نخواهیم بود…

دانلود قسمت ۹ ـ بروزرسانی مسیرجاری

۸- دریافت لوکیشن جاری با سفارشی کردن بیشتر

توی این قسمت یکم کار خودمون رو بهتر میکنیم و سفارشی ترش میکنیم. میتونیم دقیقا طول و عرض و جغرافیایی خودمون رو در اختیار و داشته باشیم…

دانلود قسمت ۸ ـ دریافت مکان فعلی

۷- فعال‌سازی لوکیشن خود:

توی این قسمت خیلی ساده موقعیت مکانی خودمون رو فعال میکنیم…

دانلود قسمت ۷ ـ فعال سازی لوکیشن

۱۲- گرفتن نام کشور محل کلیک شده

توی این قسمت مثل قسمت قبلی روی محل کلیک شده مارکر میذاریم با این تفاوت که title مارکر ها رو نام کشور های کلیک شده میذاریم…
قراره توی این قسمت هم از GeoCoder استفاده میکنیم…

۱۱- بررسی رویداد کلیک روی نقشه:

توی این قسمت رویداد کلیک نقشه رو باهم بررسی میکنیم و کاری میکنیم که هربار روی نقشه کلیک شد یک مارکر روی محل کلیک شده اضافه بشه…

دانلود قسمت ۱۱ ـ کلیک روی نقشه

۱۰- استفاده از مارکر:

توی این قسمت یک مارکر به موقعیت خودمون اضافه میکنیم و یاد میگیریم که چطور اونو حذف کنیم…

۱۳- رسم خطوط بین دو مارکر:

توی این قسمت رسم خط رو یاد میگیریم و یادمیگیریم که چطور میتونیم اونو حذف کنیم و این کار رو با استفاده از دو مارکر انجام میدیم که بین اونها خط رو رسم کنیم

لینک کوتاه شده مطلب: http://www.esfandune.ir/iguSG

پسور فایل ها: esfandune.ir یا www.esfandune.ir می باشد

درباره Mahdi

ما را دنبال کنید:


آموزش های پیشنهادی سایت (نمایش همه):


۲۷ نظر

  • میثم گفت:

    سلام
    برنامه رو نصب کردم ببینم چجوریه” نصب شد و اجرا هم میشه ” اما چیز خاصی توش نداره و لوکیشن و… نمیاره!

    • Mahdi گفت:

      سلام دوست عزیز
      این آموزش آموزش مقدماتی google map هست

      درباره دریافت لوکیشن هم نسخه اندروید شما چنده؟
      دریافت لوکیشن جز پرمیشن هایی هست که از اندروید ۶ به بعد نیاز هست که کاربر در حین برنامه اجازه دسترسی بده و ما اینو آموزش ندادیم توی این دوره.

  • هدی گفت:

    سلام
    اگه بخواهیم بدون اینکه منو درست کنیم یهو مپ لوکیشن ما رو بصورت زوم شده نشون بده
    باید چی کار کنم؟
    توومتد onMap باید بذارم دستورشو؟

  • علی گفت:

    سلام در چرا بعد از اجرا گرفتن و کلید گرفتن نقشه اجرا نمیشه حتی برنامه خودتون نقشه لود نمیشه

    • Mahdi گفت:

      سلام دوست عزیز
      داخل آموزش sha مربوط به نسخه دیباگ رو داخل سایت google قرار میدیم و به همین دلیل وقتی نسخه release رو ایجاد میکنین مپ لود نمیشه
      برای حل شدن این موضوع باید sha مربوط به نسخه release رو داخل سایت گوگل قرار بدید.
      keytool -list -v -keystore /home/Desktop/Learnings/TestApp/keystore.jks -alias test -storepass password -keypass password
      با استفاده از دستورات بالا میتونید sha مربوط به نسحه ریلیز رو دریافت کنید

  • ali گفت:

    مسیریابی اموزش داده شده؟

  • حامد گفت:

    سلام.
    آیا میتونم از این آموزش در اکلیپس استفاده کنم؟

  • محمدرضا حاتمیان گفت:

    سلام وعرض خسته نباشید من نرم افزاری ساختم که با map کار می کنه مشکلی برای برنامه ایجاد شده زمانی که نرم افزار را توی اندرود ۴٫۴٫۲ اجرا می کنم به خوبی کار می کنه ولی زمانی که این نرم افزار را روی اندروید ۷ اجرا می کنم کار نمی کنه منظورم اینکه map اصلا نشون نمیده ی صفحه سفید نشون می ده ؟ کاری باید انجام بدم که روی اندریود ۶ و۷ اجرا بشه؟ ممنون از آموزش های خوبتون

  • علی گفت:

    سلام .یه سوال خیلی مهم دارم اگه بخواهیم فاصله بین موقعیت فعلی با یک نقطه دیگر رو محاسبه کنیم باید چی کار کنیم؟
    محاسبه بین دو نقطه ثابت رو دارم
    نمایش موقعیت ماکانی فعلی رو هم دارم.
    ولی وقتی میخوام یکی از نقاط مشخص شده رو به موقعیت فعلی تغییر بدم که نسبت یه اون محاسبه بشه ولی جواب نمیده و برنامه باز نمیشه

    • Mahdi گفت:

      سلام دوست عزیز من کامل متوجه منظور شما نشدم اما برای محاسبه فاصله می تونید از متد distanceTo استفاده کنید به این صورت که دوتا شی Location بسازید و بهشون latitude و longitude دوتا موقعیت رو بدید و اون موقع میتونید از شی distanceTo استفاده کنید.

  • hamid گفت:

    سلام
    فایل نصبی رو گشی نصب کردم ولی نقشه بارگذاری نمیشه و همش ÷یغام update میده. سطح دسترسی چک کردم مجوز دسترسی داره
    مشکل از چیه مهندس؟؟؟؟؟

    • Mahdi گفت:

      سلام
      احتمالا درخواست آپدیت google play service رو از شما داره که باید اون رو از توی google play بروزرسانی کنیدhttp://www.esfandune.ir/wp-admin/edit-comments.php?p=227339#comments-form

  • maryamazadmaanesh گفت:

    سلام ممنون بابت آموزشهای خیلی خوبتون
    من آموزشها رو قدم به قدم پیش رفتم و هیچ مشکلی هم نبود، بدون خطا اجرا میشه، به جز اینکه لوکیشن فعلی خودم رو نشون نمیده روی نقشه. من خیلی به این قسمت از نقشه (یعنی نمایش لوکیشن فعلی) تو برنامم نیاز دارم. میشه لطف کنید راهنماییم کنید باید چیکار کنم؟
    من توی ی سایت دیگه خوندم که باید کتابخانه لوکیشن رو اضافه کرد این کار رو هم کردم ولی جواب نداد.

  • زهرا گفت:

    با سلام
    در قسمت ۶ و دریافت مکان با استفاده از کلاس Geocoder در برنامه مکان رو وارد میکنم ولی بعد از کلیک روی دکمه Go برنامه اجرا نمیشه و خطاش هم اینه :
    java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
    مشکلش چی میتونه باشه ؟ من گام به گام با شما پیش رفتم
    چرا لیستی که داخل Address قرار میگیره تو این کلاس خالیه ؟ ممنون میشم اگه زودتر جواب بدید مربوط به پروژه کارشناسیم هست

  • زهرا گفت:

    بله همه مکان ها رو ایراد میگیره

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (ServiceOK()){
    Toast.makeText(getApplicationContext(),”SERVICEOK”,Toast.LENGTH_SHORT).show();
    setContentView(R.layout.map_layout);
    initMap();

    search=(Button)findViewById(R.id.search_btn);
    search.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick (View view) {
    EditText et = (EditText)findViewById(R.id.Edittext1);
    String key = et.getText().toString().trim();
    Geocoder gc = new Geocoder(MainActivity.this);
    try{
    List list = gc.getFromLocationName(key, 1);
    Address address = list.get(0);
    gotolocation(address.getLatitude(),address.getLongitude(), Zoom);

    } catch (Exception e) {

    Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
    }
    }
    });

    }
    else
    setContentView(R.layout.activity_main);
    }

    private boolean ServiceOK(){
    GoogleApiAvailability apiAvailability=GoogleApiAvailability.getInstance();
    int chech=apiAvailability.isGooglePlayServicesAvailable(this);
    if (chech== ConnectionResult.SUCCESS){
    return true;
    }
    else if (apiAvailability.isUserResolvableError(chech)){
    Toast.makeText(getApplicationContext(),”Error”,Toast.LENGTH_SHORT).show();
    }
    else
    Toast.makeText(getApplicationContext(),”NOSERVICE”,Toast.LENGTH_LONG).show();
    return false;

    }

    private void initMap(){
    if (map==null){
    SupportMapFragment mapFragment=(SupportMapFragment)getSupportFragmentManager()
    .findFragmentById(R.id.map_fragment);
    mapFragment.getMapAsync(this);
    }
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
    map=googleMap;
    if (map != null){
    Toast.makeText(getApplicationContext(),”INIT”,Toast.LENGTH_SHORT).show();
    gotolocation(35.698405,51.378647,Zoom);}
    else
    Toast.makeText(getApplicationContext(),”NotINIT”,Toast.LENGTH_LONG).show();
    }

    private void gotolocation(double lat,double lng){
    LatLng latLng=new LatLng(lat,lng);
    CameraUpdate cameraUpdate= CameraUpdateFactory.newLatLng(latLng);
    map.moveCamera(cameraUpdate);
    }
    private void gotolocation(double lat,double lng,float Zoom){
    LatLng latLng=new LatLng(lat,lng);
    CameraUpdate cameraUpdate= CameraUpdateFactory.newLatLngZoom(latLng,Zoom);
    map.moveCamera(cameraUpdate);
    }
    }

  • محمد گفت:

    سلام. در قسمت ۸ بعد از اینکه last locationرو میگریم اگه location =null بود چه کار باید بکنیم ؟ شما فقط تست نمایش دادین. میشه راهنمایی کنبد؟

  • یوسف گفت:

    سلام
    با تشکر از آموزش بسیلر خوب شما
    در مورد این لینکی که فرمودید
    https://stackoverflow.com/questions/33666071/android-marshmallow-request-permission
    امکان داره بیشتر توضیح بفرمایید / الان من نمیدونم کدومو استفاده کنم

    • Mahdi گفت:

      سلام خوشحالم که مورد رضایتتون بوده
      ActivityCompat.requestPermissions(MainActivity.this,
      new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
      ۱);
      توی این قسمت در خواست پرمیشن میدید که شما بجای READ_EXTERNAL_STORAGE باید پرمیشن لوکیشن رو بذارید

      @Override
      public void onRequestPermissionsResult(int requestCode,
      String permissions[], int[] grantResults) {
      switch (requestCode) {
      case 1: {

      // If request is cancelled, the result arrays are empty.
      if (grantResults.length > 0
      && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

      // permission was granted, yay! Do the
      // contacts-related task you need to do.
      } else {

      // permission denied, boo! Disable the
      // functionality that depends on this permission.
      Toast.makeText(MainActivity.this, “Permission denied to read your External storage”, Toast.LENGTH_SHORT).show();
      }
      return;
      }

      // other ‘case’ lines to check for other
      // permissions this app might request
      }
      }

      این متد رو هم overide میکنید که بررسی میکنه اگه کاربر پرمیشن رو Allow کرده باشه یا نکرده باشه کار مربوطه رو انجام بدید

  • سلام وقت بخیر قسمت مسیر یابی را پیدا نمی کنم ؟؟ آموزشش نیست ؟؟

نظر خود را بیان کنید

بسته آموزشی زمستانه فارسی اندروید
تخفیف نورورزی
تخفیف سورس اینستا
تخفیف سورس اینستا
تخفیف سورس اینستا
تخفیف سورس اینستا
تخفیف سورس اینستا
تخفیف سورس اینستا
بسته آموزشی زمستانه فارسی اندروید
آموزش برنامه نویسی اندروید با کاتلین