آموزش کار با نقشه (Google map) در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش های برنامه نویسی اندروید به آموزش کار با نقشه (Google map) در برنامه نویسی اندروید می پردازیم در برنامه های مشهوری همانند اسنپ و یا Tap30 از این api استفاده کرده اند. این سرویس توسط گوگل ارائه می شود و استفاده از آن رایگان است فقط نیار به داشتن اکانت در سایت زیر است پس باید شما یک اکانت در بخش developer گوگل ایجاد کنید.
از لینک زیر برای ثبت نام استفاده کنید.
1 | https://console.developers.google.com/ |
شما فقط نیاز به یک جیمیل دارید (وارد جیمیل خود بشوید سپس وارد سایت بالا شوید)
بعد از ورود بروی Create new Project کیلک کنید و یک نام برای آن قرار دهید و آن را ایجاد کنید. بعد از آن وارد داشبورد شوید و بروی Enable APi کلیک کنید همانند عکس زیر
سپس باید بروی Google maps android api کلیک کنید همانند عکس زیر
بعد از کلیک وارد عکس زیر می شوید و باید روی Enable کلیک کنید تا برای شما فعال شود.
بعد از آن کمی طول می کشد تا فعال شود بعد از فعال شدن به بخش Credentials که در قسمت چپ پنل وجود دارد رفته سپس بروی Create credentials کلیک کرده و همانند زیر عمل کنید.
بعد از کلیک بروی Api key یک کد برای شما ساخته می شود آن را نگه دارید چون در ادامه به آن احتیاج داریم. سپس برودی آن کلیک کنید
سپس با شکل زیر رو به رو می شوید و همانند ما آن را تغییر دهید.
بعد از آن باید بروی Add pacakge name and finger print کلیک کنید
در قسمت package name نام پکیج خود را قرار دهید و در دومی (SHA-1 certificate fingerprint) یک کلید مخصوص است که باید از طریق زیر به دست آورید
وارد اندروید استودیو شوید و همانند عکس زیر پیش بروید
در آن پایین کلید ShA-1 را م یبینید آن را کپی کنید و در آن جا قرار دهید و یکم بیایید پایین و save را بزنید.
تا اینجا بخشی از کار به اتمام رسیده است فعلا برنامه ما به Google map وصل شده است حالا باید به بخش کد برویم.
وارد فایل Build.gradle شوید بخش moudle خط زیر را اضافه کنید.
1 | compile 'com.google.android.gms:play-services:8.3.0' |
و پروژه را Sync کنید
وارد AndroidManifest.xml شوید و خط های زیر را قبل از بسته شدن تگ application قرار دهید.
1 2 3 4 5 6 | <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="YOUR_GOOGLE_MAP_API_KEY" /> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> |
در بالا به جای YOUR_GOOGLE_MAP_API_KEY باید اون کدی که بهتان گفتم ذخیره اش کنید برایمان مهم است را قرار دهید
یادمان نرود که باید دسترسی اینترنت را نیز به androidManifest.xml اضافه کنیم.
1 | <uses-permission android:name="android.permission.INTERNET"/> |
در بخش layout خود کد های زیر را قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_gravity="center" android:layout_height="match_parent" /> </RelativeLayout> |
چیز خاصی در این layout نیست بلکه فقط یک RelativeLayout و یک Fragment که این Fragment ما یک مقدار خاص است باید برای آن یک چیز جدید به نام android:name قرار داده ایم تا نقشه ما در آن بارگذاری شود .
هم اکنون اگر پروژه را اجرا کنید نقشه برای شما لود خواهد شد .
این آموزش هم به پایان رسید .
موفق باشید.
با عرض سلام و تشکر از راهنمایی و آموزش استفاده از google maps در اندروید بنده تمامی مراحل ذکر شده را انجام داده ام اما با اجرای شبیه ساز google map اجرا نمی شود و در اخل برنامه پیغام خطای زیر نمایش داده می شود
Error:Execution failed for task ‘:app:transformClassesWithDexForDebug’.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
ممنون می شوم اگر راهنمایی بفرمایید
شما از تعداد زیادی از کتاب خانه استفاده کردید و نیاز دارید تا multidex را فعال کنید می تونید از لینک زیر برای فعال سازی multidex کمک بگیرد
آموزش فعال سازی multidex
http://programchi.ir/2017/07/11/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d9%81%d8%b9%d8%a7%d9%84-%d8%b3%d8%a7%d8%b2%db%8c-multidex-%d8%af%d8%b1-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%a7%d9%86%d8%af%d8%b1/
multidex چیست ؟
http://programchi.ir/2017/07/10/multidex-%da%86%db%8c%d8%b3%d8%aa-%d8%9f/
موفق باشید.
سلام خسته نباشید این آموزش در جاوا با اکلپیس برای اندروید هم به کار میره یا این آوزش فقط اندروید استدیو هست؟
در eclipse هم کاربرد دارد.
باسلام
تشکر از آموزش خوبتون
چطور میتونم نقشه رو جوری بسازم که طرف بتونه دستی لوکیشن خودش رو کمی تغییر بدهد
(مثل برنامه اسنپ/تپسی کاربر لوکیشن خودش رو یکمی تغییر بدهد و بعد بتونم lat و long شخص رو دریافت کنم؟)
ممنون میشم راهنمایی کنید
سلام
برای اینکه کاربر بتونه یک نقطه رو مشخص کنه لازمه که با PlacePicker کار کنید من یک مثال ساده ازش رو در زیر میزارم.
البته یک راه دومی هم هست که باید از کد زیر استفاده کنید که خیلی راحتر هم هست.
البته حس می کنم شما دنبال Marker هستید کد زیر را هم تست بکنید شاید به دنبال این کد بودید.
و در مورد گرفتن latitude و longitude باید از یک آدرس latitude و longitude بگیرید مثل زیر
موفق باشید.
سلام مجدد
آقای خیلی ممنون برای پست قبلی که گذاشته ایید
من هنوز نقشه رو نتونستم لود کنم
توی صفحه که باز میشه فقط آرم گوگل پایین صفحه هست و بک گراند هم یه رنگ بژ مانند داره
اشکال کار کجا میتونه باشه که خوب لود نمیشه ؟
(همه موارد بالا کاملا رعایت شده است)
سلام اگر همانند آموزش پیش رفته باشید و api key که نحوه دریافتش رو همان پست قرار داده ایم را طی کرده باشید و در برنامه قرار داده باشید نباید مشکلی باشد از اتصال به اینترنت هم مطمئن شوید.
نام پکیج رو اشتباه وارد کرده بودم بخاطر این نقشه لود نشده بود و درست شد .. ممنون
در مورد سوالم که زحمت کشیدید و توضیح دادید متوجه توضیحاتتون نشدم
من میخوام طرف وقتی برنامه رو باز کرد نقشه بصورت اتوماتیک موقعیت آن را نمایش بدهد که کجا قرار دارد و همینطور خود کاربرد بتونه اگر موقعیت آن کمی اشتباه هست در موقعیت خودش رو تغییر بدهد و موقعیت جدید رو به سرور ارسال کند
باز هم ممنون اول بخاطر موضوعات و آموزشهای عالیتون و همینطور پیگیری در پاسخ سوالات
سلام
خواهش می کنم.
از این کد زیر برای به دست آوردن موقعیت فعلی کاربر می تونید استفاده کنید.
موفق باشید.
اینو باید کجا بنویسم منظورم در چه زبانه ای
منم همین مشکلو دارم. کدوم قسمت رو درست کردین دقیقا؟؟
سلام خسته نباشید سایتتون عالیه تشکر
یه سوال بعد اجرا این پیغام رو میده 6:15:22 AM: External task execution finished ‘signingReport’.
میشه راهنمایی بفرمایید
minsdk باید برابر با 16 یا بالاتر باشه و هیمنطور قند شکن رو نیز روشن کنید.
سلام در رابطه با map در اندروید سوالی داشتم public void onMapReady(GoogleMap map) من این تابع رو در Generate من نیست که بع پروزه اضافه کنم ؟ راه حلش چیه ؟ ممنون
خیلی ممنونم
خواهش می کنم
ممنون از توضیحات کاملتون در مورد این
سرویس
سلام
نقشه رو چجوری فارسی کنم؟
سلام
من نمی تونم وارد سایت console developers بشم
Your client does not have permission to get URL / from this server. That’s all we know.
علت چیست؟
سلام …ممنون بابت آموزش های خوبتون
لطف کنید آموزش مسیریابی روی نقشه رو هم بذارید برامون
سلام به زودی قرار می گیرد.
سلام جناب جعفری پور
من تمام مراحل رو همونجور که فرمودید پیش رفتم و ای پی آی کد رو هم درست درج کردم . برنامه بدون ارور بالا میاد اما توی گوشی تا لایه مورد نظر رو باز میکنم شوتم میکنه بیرون.
پرمیژن اینترنت رو هم دادم بهش ، کتابخانه رو هم سینک کردم.
فقط تنها جایی که به نظرم میرسه اشتباه کرده باشم پکیج نیمهست که از مین اکتیویتی برداشتم که داخل مین اکتیویتی به این شکل هست : package ir.andro30ty.behtarinrestaurant;
من هم به این شکل وارد کردم :
ir.andro30ty.behtarinrestaurant
ممنون میشم راهنماییم کنید
سلام
باید Package name خودتان را قرار دهید.
سلام دوست عزیزم ممنون به خاطر زحماتت
من تمامی مراحل را درست انجام دادم اما وقتی برنامه اجرا میشود از برنامه بیرون انداخته میشوم و این ارور را میدهد : unfortunately my application has stoped
پیغام قرمز رنگ داخل اندرویید هم این هستش :
/Google Maps Android API: Authorization failure. Please see https://developers.google.com/maps/documentation/android-api/start for how to correctly set up the map.
E/Google Maps Android API: In the Google Developer Console (https://console.developers.google.com)
Ensure that the “Google Maps Android API v2” is enabled.
Ensure that the following Android Key exists:
API Key: AIzaSyCMBP4QQvRPlHIzaOc_qjqZ3nLjbieqof8
Android Application (;): A3:64:8A:07:45:4F:16:E7:84:A5:87:72:07:44:35:56:49:6B:4F:E5;com.example.he.myapplication
سلام و درود شما باید در Google developer یک Key بگیرید و در برنامه قرار دهید برای اطلاعات بیشتر لطفا لاگ رو قرار دهید.
سلام. وقتی که نقشه باز میشه به صورت کاملا واید هست. من میخوام در مرحله اول که نقشه باز شد به صورت اتوماتیک زوم بشه روی موقعیت فعلی
سلام خسته نباشد برای من 2 ارور زیر رو میده
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
و
Caused by: com.android.tools.r8.utils.AbortException: Error: null, Cannot fit requested classes in a single dex file (# methods: 82813 > 65536)
سلام الان کنسول گوگل یکم تغییر کرده برای استفاده موقعی که میخواییم نیبل کنیم تو API Library کدوم رو بایید بزنم ممنون
سلام ببخشید من میخوام چن تا مکان مثل پارک رو به صورت فیلتر در بالای گوگل مپ بکنم میشه اموزش این رو بزارید ممنون