Maps SDK برای اندروید میتواند یک تصویر بیت مپ از یک نقشه ارائه کند و تعامل محدودی را به کاربر ارائه دهد. به این نقشه حالت لایت می گویند.
نمونه کد
مخزن ApiDemos در GitHub شامل نمونه هایی است که استفاده از حالت ساده را نشان می دهد:
- LiteDemoActivity - Java : اصول اولیه استفاده از نقشه حالت Lite در جاوا
- LiteDemoActivity - Kotlin : اصول اولیه استفاده از نقشه حالت Lite در Kotlin
- LiteListDemoActivity - Java : نمایش نقشه ها به طور موثر در ListViews با استفاده از حالت Lite در جاوا
- LiteListDemoActivity - Kotlin : نمایش نقشه ها به طور موثر در ListViews با استفاده از حالت Lite در Kotlin
نمای کلی حالت Lite
نقشه حالت ساده یک تصویر بیت مپ از یک نقشه در یک مکان و سطح بزرگنمایی مشخص است. حالت Lite از همه انواع نقشه (عادی، هیبریدی، ماهواره ای، زمینی) و زیرمجموعه ای از عملکردهای ارائه شده توسط API کامل پشتیبانی می کند. حالت Lite زمانی مفید است که میخواهید تعدادی نقشه در یک جریان ارائه کنید، یا نقشهای که برای پشتیبانی از تعامل معنادار بسیار کوچک است.
کاربرانی که نقشه را مشاهده می کنند نمی توانند نقشه را بزرگنمایی یا حرکت دهند. آیکون های روی نقشه به کاربران امکان می دهد نقشه را در برنامه تلفن همراه Google Maps مشاهده کنند و مسیرها را درخواست کنند.
اضافه کردن یک نقشه حالت ساده
حالت Lite از همان کلاسها و رابطهای API کامل Google Maps Android استفاده میکند. میتوانید یک GoogleMap
به روشهای زیر روی حالت Lite تنظیم کنید:
- یا به عنوان یک ویژگی XML برای
MapView
یاMapFragment
- یا در شیء
GoogleMapOptions
به عنوان یک ویژگی XML برای MapView
یا MapFragment
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:name="com.google.android.gms.maps.MapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:cameraZoom="13"
map:mapType="normal"
map:liteMode="true"/>
در شیء GoogleMapOptions
کاتلین
val options = GoogleMapOptions() .liteMode(true)
جاوا
GoogleMapOptions options = new GoogleMapOptions() .liteMode(true);
برای جزئیات در مورد تنظیم وضعیت اولیه نقشه، راهنمای شی نقشه را ببینید.
قصد راه اندازی نمای نقشه یا درخواست مسیرها
به طور پیش فرض، یک نوار ابزار در سمت راست پایین نقشه حاوی نمادهایی است که دسترسی به نمای نقشه یا درخواست مسیرها را در برنامه تلفن همراه Google Maps فراهم می کند. میتوانید با فراخوانی UiSettings.setMapToolbarEnabled(false)
نوار ابزار را غیرفعال کنید. برای جزئیات بیشتر، به اسناد نوار ابزار مراجعه کنید.
همچنین بهطور پیشفرض وقتی کاربر روی نقشه ضربه میزند، API برنامه تلفن همراه Google Maps را راهاندازی میکند. میتوانید با استفاده از GoogleMap.setOnMapClickListener()
برای تنظیم شنونده خود، این مورد را لغو کنید. همچنین میتوانید رویدادهای کلیک روی نقشه را با فراخوانی setClickable()
در نمای حاوی MapView
یا MapFragment
غیرفعال کنید. برای جزئیات این دو تکنیک، به مستندات رویدادها مراجعه کنید.
رویدادهای چرخه زندگی
هنگام استفاده از API در حالت کاملاً تعاملی ، کاربران کلاس MapView
باید تمام متدهای چرخه حیات فعالیت را به متدهای مربوطه در کلاس MapView
ارسال کنند. نمونه هایی از متدهای چرخه حیات عبارتند از: onCreate()
، onDestroy()
، onResume()
و onPause()
.
هنگام استفاده از کلاس MapView
در حالت ساده ، ارسال رویدادهای چرخه حیات اختیاری است، به جز در شرایط زیر:
- فراخوانی
onCreate()
الزامی است، در غیر این صورت هیچ نقشه ای ظاهر نمی شود. - اگر میخواهید نقطه My Location را روی نقشه حالت Lite خود نشان دهید و از منبع موقعیت مکانی پیشفرض استفاده کنید، باید
onResume()
وonPause()
را فراخوانی کنید، زیرا منبع مکان فقط بین این تماسها بهروزرسانی میشود. اگر از منبع موقعیت مکانی خود استفاده می کنید، لازم نیست این دو روش را فراخوانی کنید.
ویژگی های API پشتیبانی شده
جدول زیر رفتار یک نقشه حالت ساده را برای هر ناحیه از عملکرد API توضیح می دهد. اگر برنامهای روشی را فراخوانی کند که در حالت ساده پشتیبانی نمیشود، API یک پیام هشدار ثبت میکند.
کارکرد | |
---|---|
انواع نقشه | پشتیبانی می شود؟ بله انواع نقشه زیر از طریق GoogleMapOptions.mapType() و GoogleMap.setMapType() در دسترس هستند: MAP_TYPE_NORMAL ، MAP_TYPE_SATELLITE ، MAP_TYPE_TERRAIN ، MAP_TYPE_HYBRID ، MAP_TYPE_NONE |
چند خط، چند ضلعی، دایره | پشتیبانی می شود؟ بله عملکرد حالت ساده برای اشکال با API کامل مطابقت دارد. |
فرافکنی | پشتیبانی می شود؟ بله عملکرد حالت ساده برای Projection با API کامل مطابقت دارد. |
موقعیت مکانی من | پشتیبانی می شود؟ بله عملکرد حالت ساده برای لایه My Location با API کامل مطابقت دارد. |
بالشتک نقشه | پشتیبانی می شود؟ بله پشتیبانی از حالت Lite برای padding نقشه با API کامل مطابقت دارد. |
پنجره های اطلاعات | پشتیبانی می شود؟ بله اگر title() یک نشانگر را تنظیم کنید، زمانی که کاربر روی نشانگر ضربه میزند، پنجره اطلاعات پیشفرض ظاهر میشود. با فراخوانی showInfoWindow() روی نشانگر میتوانید پنجره اطلاعات را به صورت برنامهنویسی نشان دهید. همچنین میتوانید پنجرههای اطلاعات سفارشی را از طریق رابط InfoWindowAdapter ایجاد کنید. |
سبک های نقشه پایه سفارشی | پشتیبانی می شود؟ تا حدی Maps SDK برای اندروید از استایل سفارشی نقشه پایه پشتیبانی می کند. Lite Mode فقط از استایل سفارشی مبتنی بر JSON پشتیبانی میکند، نه از استایل مبتنی بر ابر که برای ارائه یک نقشه استایلدار به شناسه نقشه نیاز دارد. حالت Lite همچنین از تنظیم طرح رنگ نقشه برای استفاده از حالت تاریک پشتیبانی نمی کند. |
نشانگرها | پشتیبانی می شود؟ تا حدی می توانید یک نشانگر اضافه کنید و به یک رویداد کلیک پاسخ دهید. همچنین می توانید نمادهای نشانگر سفارشی را اضافه کنید. امکان کشیدن نشانگر وجود ندارد. نشانگرها در نقشه حالت ساده صاف هستند و نمیتوان آنها را چرخاند. |
موقعیت دوربین، زوم و انیمیشن | پشتیبانی می شود؟ تا حدی شما می توانید هدف و زوم دوربین را تنظیم کنید، اما نه شیب یا بلبرینگ. سطح زوم در حالت ساده به نزدیکترین عدد صحیح گرد می شود. با فراخوانی فراخوانی |
رویدادهای نقشه | پشتیبانی می شود؟ تا حدی حالت Lite از برای غیرفعال کردن رویدادهای کلیک روی نقشه در حالت ساده، میتوانید برای جزئیات، به مستندات رویدادها مراجعه کنید. |
نقشه ها و ساختمان های داخلی | پشتیبانی می شود؟ خیر حالت Lite همان کاشیهای Maps Static API را نشان میدهد. این بدان معنی است که اگر پلان کف داخلی به کاشی پیش فرض پخته شود، ظاهر می شود. در غیر این صورت نمی شود. علاوه بر این، نمی توانید سطح نشان داده شده را تغییر دهید یا انتخابگر سطح را دستکاری کنید. |
لایه ترافیک | پشتیبانی می شود؟ خیر GoogleMap.setTrafficEnabled() در حالت ساده پشتیبانی نمی شود. |
روکش های زمینی | پشتیبانی می شود؟ خیر GoogleMap.addGroundOverlay() در حالت ساده پشتیبانی نمی شود. |
روکش کاشی | پشتیبانی می شود؟ خیر GoogleMap.addTileOverlay() در حالت ساده پشتیبانی نمی شود. |
حرکات | پشتیبانی می شود؟ خیر حالت Lite از ژستها پشتیبانی نمیکند. فعال و غیرفعال کردن ژست ها هیچ تاثیری نخواهد داشت. |
نمای خیابان | پشتیبانی می شود؟ خیر نمای خیابان در حالت ساده پشتیبانی نمیشود. |
Maps SDK برای اندروید میتواند یک تصویر بیت مپ از یک نقشه ارائه کند و تعامل محدودی را به کاربر ارائه دهد. به این نقشه حالت لایت می گویند.
نمونه کد
مخزن ApiDemos در GitHub شامل نمونه هایی است که استفاده از حالت ساده را نشان می دهد:
- LiteDemoActivity - Java : اصول اولیه استفاده از نقشه حالت Lite در جاوا
- LiteDemoActivity - Kotlin : اصول اولیه استفاده از نقشه حالت Lite در Kotlin
- LiteListDemoActivity - Java : نمایش نقشه ها به طور موثر در ListViews با استفاده از حالت Lite در جاوا
- LiteListDemoActivity - Kotlin : نمایش نقشه ها به طور موثر در ListViews با استفاده از حالت Lite در Kotlin
نمای کلی حالت Lite
نقشه حالت ساده یک تصویر بیت مپ از یک نقشه در یک مکان و سطح بزرگنمایی مشخص است. حالت Lite از همه انواع نقشه (عادی، هیبریدی، ماهواره ای، زمینی) و زیرمجموعه ای از عملکردهای ارائه شده توسط API کامل پشتیبانی می کند. حالت Lite زمانی مفید است که میخواهید تعدادی نقشه در یک جریان ارائه کنید، یا نقشهای که برای پشتیبانی از تعامل معنادار بسیار کوچک است.
کاربرانی که نقشه را مشاهده می کنند نمی توانند نقشه را بزرگنمایی یا حرکت دهند. آیکون های روی نقشه به کاربران امکان می دهد نقشه را در برنامه تلفن همراه Google Maps مشاهده کنند و مسیرها را درخواست کنند.
اضافه کردن یک نقشه حالت ساده
حالت Lite از همان کلاسها و رابطهای API کامل Google Maps Android استفاده میکند. میتوانید یک GoogleMap
به روشهای زیر روی حالت Lite تنظیم کنید:
- یا به عنوان یک ویژگی XML برای
MapView
یاMapFragment
- یا در شیء
GoogleMapOptions
به عنوان یک ویژگی XML برای MapView
یا MapFragment
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:name="com.google.android.gms.maps.MapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:cameraZoom="13"
map:mapType="normal"
map:liteMode="true"/>
در شیء GoogleMapOptions
کاتلین
val options = GoogleMapOptions() .liteMode(true)
جاوا
GoogleMapOptions options = new GoogleMapOptions() .liteMode(true);
برای جزئیات در مورد تنظیم وضعیت اولیه نقشه، راهنمای شی نقشه را ببینید.
قصد راه اندازی نمای نقشه یا درخواست مسیرها
به طور پیش فرض، یک نوار ابزار در سمت راست پایین نقشه حاوی نمادهایی است که دسترسی به نمای نقشه یا درخواست مسیرها را در برنامه تلفن همراه Google Maps فراهم می کند. میتوانید با فراخوانی UiSettings.setMapToolbarEnabled(false)
نوار ابزار را غیرفعال کنید. برای جزئیات بیشتر، به اسناد نوار ابزار مراجعه کنید.
همچنین بهطور پیشفرض وقتی کاربر روی نقشه ضربه میزند، API برنامه تلفن همراه Google Maps را راهاندازی میکند. میتوانید با استفاده از GoogleMap.setOnMapClickListener()
برای تنظیم شنونده خود، این مورد را لغو کنید. همچنین میتوانید رویدادهای کلیک روی نقشه را با فراخوانی setClickable()
در نمای حاوی MapView
یا MapFragment
غیرفعال کنید. برای جزئیات این دو تکنیک، به مستندات رویدادها مراجعه کنید.
رویدادهای چرخه زندگی
هنگام استفاده از API در حالت کاملاً تعاملی ، کاربران کلاس MapView
باید تمام متدهای چرخه حیات فعالیت را به متدهای مربوطه در کلاس MapView
ارسال کنند. نمونه هایی از متدهای چرخه حیات عبارتند از: onCreate()
، onDestroy()
، onResume()
و onPause()
.
هنگام استفاده از کلاس MapView
در حالت ساده ، ارسال رویدادهای چرخه حیات اختیاری است، به جز در شرایط زیر:
- فراخوانی
onCreate()
الزامی است، در غیر این صورت هیچ نقشه ای ظاهر نمی شود. - اگر میخواهید نقطه My Location را روی نقشه حالت Lite خود نشان دهید و از منبع موقعیت مکانی پیشفرض استفاده کنید، باید
onResume()
وonPause()
را فراخوانی کنید، زیرا منبع مکان فقط بین این تماسها بهروزرسانی میشود. اگر از منبع موقعیت مکانی خود استفاده می کنید، لازم نیست این دو روش را فراخوانی کنید.
ویژگی های API پشتیبانی شده
جدول زیر رفتار یک نقشه حالت ساده را برای هر ناحیه از عملکرد API توضیح می دهد. اگر برنامهای روشی را فراخوانی کند که در حالت ساده پشتیبانی نمیشود، API یک پیام هشدار ثبت میکند.
کارکرد | |
---|---|
انواع نقشه | پشتیبانی می شود؟ بله انواع نقشه زیر از طریق GoogleMapOptions.mapType() و GoogleMap.setMapType() در دسترس هستند: MAP_TYPE_NORMAL ، MAP_TYPE_SATELLITE ، MAP_TYPE_TERRAIN ، MAP_TYPE_HYBRID ، MAP_TYPE_NONE |
چند خط، چند ضلعی، دایره | پشتیبانی می شود؟ بله عملکرد حالت ساده برای اشکال با API کامل مطابقت دارد. |
فرافکنی | پشتیبانی می شود؟ بله عملکرد حالت ساده برای Projection با API کامل مطابقت دارد. |
موقعیت مکانی من | پشتیبانی می شود؟ بله عملکرد حالت ساده برای لایه My Location با API کامل مطابقت دارد. |
بالشتک نقشه | پشتیبانی می شود؟ بله پشتیبانی از حالت Lite برای padding نقشه با API کامل مطابقت دارد. |
پنجره های اطلاعات | پشتیبانی می شود؟ بله اگر title() یک نشانگر را تنظیم کنید، زمانی که کاربر روی نشانگر ضربه میزند، پنجره اطلاعات پیشفرض ظاهر میشود. با فراخوانی showInfoWindow() روی نشانگر میتوانید پنجره اطلاعات را به صورت برنامهنویسی نشان دهید. همچنین میتوانید پنجرههای اطلاعات سفارشی را از طریق رابط InfoWindowAdapter ایجاد کنید. |
سبک های نقشه پایه سفارشی | پشتیبانی می شود؟ تا حدی Maps SDK برای اندروید از استایل سفارشی نقشه پایه پشتیبانی می کند. Lite Mode فقط از استایل سفارشی مبتنی بر JSON پشتیبانی میکند، نه از استایل مبتنی بر ابر که برای ارائه یک نقشه استایلدار به شناسه نقشه نیاز دارد. حالت Lite همچنین از تنظیم طرح رنگ نقشه برای استفاده از حالت تاریک پشتیبانی نمی کند. |
نشانگرها | پشتیبانی می شود؟ تا حدی می توانید یک نشانگر اضافه کنید و به یک رویداد کلیک پاسخ دهید. همچنین می توانید نمادهای نشانگر سفارشی را اضافه کنید. امکان کشیدن نشانگر وجود ندارد. نشانگرها در نقشه حالت ساده صاف هستند و نمیتوان آنها را چرخاند. |
موقعیت دوربین، زوم و انیمیشن | پشتیبانی می شود؟ تا حدی شما می توانید هدف و زوم دوربین را تنظیم کنید، اما نه شیب یا بلبرینگ. سطح زوم در حالت ساده به نزدیکترین عدد صحیح گرد می شود. با فراخوانی فراخوانی |
رویدادهای نقشه | پشتیبانی می شود؟ تا حدی حالت Lite از برای غیرفعال کردن رویدادهای کلیک روی نقشه در حالت ساده، میتوانید برای جزئیات، به مستندات رویدادها مراجعه کنید. |
نقشه ها و ساختمان های داخلی | پشتیبانی می شود؟ خیر حالت Lite همان کاشیهای Maps Static API را نشان میدهد. این بدان معنی است که اگر پلان کف داخلی به کاشی پیش فرض پخته شود، ظاهر می شود. در غیر این صورت نمی شود. علاوه بر این، نمی توانید سطح نشان داده شده را تغییر دهید یا انتخابگر سطح را دستکاری کنید. |
لایه ترافیک | پشتیبانی می شود؟ خیر GoogleMap.setTrafficEnabled() در حالت ساده پشتیبانی نمی شود. |
روکش های زمینی | پشتیبانی می شود؟ خیر GoogleMap.addGroundOverlay() در حالت ساده پشتیبانی نمی شود. |
روکش کاشی | پشتیبانی می شود؟ خیر GoogleMap.addTileOverlay() در حالت ساده پشتیبانی نمی شود. |
حرکات | پشتیبانی می شود؟ خیر حالت Lite از ژستها پشتیبانی نمیکند. فعال و غیرفعال کردن ژست ها هیچ تاثیری نخواهد داشت. |
نمای خیابان | پشتیبانی می شود؟ خیر نمای خیابان در حالت ساده پشتیبانی نمیشود. |