کیت توسعه نرمافزار نقشههای اندروید (Maps SDK) میتواند یک تصویر بیتمپ از نقشه را ارائه دهد و تعامل محدودی را برای کاربر فراهم کند. به این حالت، نقشه حالت سبک (Lite Mode Map) گفته میشود.
نمونههای کد
مخزن ApiDemos در گیتهاب شامل نمونههایی است که استفاده از حالت Lite را نشان میدهند:
- LiteDemoActivity - جاوا : اصول اولیه استفاده از نقشه حالت Lite در جاوا
- LiteDemoActivity - کاتلین : اصول اولیه استفاده از نقشه حالت لایت در کاتلین
- LiteListDemoActivity - جاوا : نمایش کارآمد نقشهها در ListViewها با استفاده از حالت Lite در جاوا
- LiteListDemoActivity - Kotlin : نمایش کارآمد نقشهها در ListViewها با استفاده از حالت Lite در Kotlin
نمای کلی حالت ساده
نقشه حالت Lite، یک تصویر بیتمپ از یک نقشه در یک مکان مشخص و سطح بزرگنمایی است. حالت Lite از همه انواع نقشه (معمولی، ترکیبی، ماهوارهای، زمینی) و زیرمجموعهای از قابلیتهای ارائه شده توسط API کامل پشتیبانی میکند. حالت Lite زمانی مفید است که میخواهید تعدادی نقشه را در یک جریان ارائه دهید، یا نقشهای که برای پشتیبانی از تعامل معنادار بسیار کوچک است.
کاربرانی که نقشه را مشاهده میکنند نمیتوانند بزرگنمایی یا حرکت افقی روی نقشه داشته باشند. نمادهای روی نقشه به کاربران امکان مشاهده نقشه در برنامه تلفن همراه Google Maps و درخواست مسیر را میدهند.
اضافه شدن نقشه حالت Lite
حالت 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()الزامی است، در غیر این صورت هیچ نقشهای نمایش داده نخواهد شد. - اگر میخواهید نقطه «موقعیت مکانی من» را روی نقشه حالت ساده خود نشان دهید و از منبع موقعیت مکانی پیشفرض استفاده کنید، باید
onResume()وonPause()را فراخوانی کنید، زیرا منبع موقعیت مکانی فقط بین این فراخوانیها بهروزرسانی میشود. اگر از منبع موقعیت مکانی خودتان استفاده میکنید، فراخوانی این دو متد ضروری نیست.
ویژگیهای API پشتیبانیشده
جدول زیر رفتار یک نقشه حالت Lite را برای هر بخش از عملکرد API شرح میدهد. اگر برنامهای متدی را فراخوانی کند که در حالت Lite پشتیبانی نمیشود، API یک پیام هشدار ثبت میکند.
| عملکرد | |
|---|---|
| انواع نقشه | بله انواع نقشههای زیر از طریق GoogleMapOptions.mapType() و GoogleMap.setMapType() در دسترس هستند: MAP_TYPE_NORMAL ، MAP_TYPE_SATELLITE ، MAP_TYPE_TERRAIN ، MAP_TYPE_HYBRID ، MAP_TYPE_NONE |
| چندخطیها، چندضلعیها، دایرهها | بله عملکرد حالت ساده برای شکلها با API کامل مطابقت دارد. |
| طرح ریزی | بله عملکرد حالت سبک برای Projection با API کامل مطابقت دارد. |
| موقعیت مکانی من | بله عملکرد حالت ساده برای لایه «موقعیت مکانی من» با API کامل مطابقت دارد. |
| حاشیهگذاری نقشه | بله پشتیبانی حالت ساده برای حاشیهگذاری نقشه با API کامل مطابقت دارد. |
| پنجرههای اطلاعات | بله اگر title() یک نشانگر را تنظیم کنید، پنجره اطلاعات پیشفرض هنگامی که کاربر روی نشانگر ضربه میزند ظاهر میشود. میتوانید با فراخوانی showInfoWindow() روی نشانگر، پنجره اطلاعات را به صورت برنامهنویسی شده نمایش دهید. همچنین میتوانید از طریق رابط InfoWindowAdapter پنجرههای اطلاعات سفارشی ایجاد کنید. |
| سبکهای نقشه پایه سفارشی | پشتیبانی شده؟ تا حدی کیت توسعه نرمافزار نقشهها برای اندروید (Maps SDK) از استایلبندی سفارشی نقشه پایه پشتیبانی میکند. حالت ساده (Lite Mode) فقط از استایلبندی سفارشی مبتنی بر JSON پشتیبانی میکند، نه استایلبندی مبتنی بر ابر که برای رندر نقشه استایلبندیشده به شناسه نقشه نیاز دارد. حالت ساده همچنین از تنظیم طرح رنگ نقشه برای استفاده از حالت تاریک (dark mode) پشتیبانی نمیکند. |
| نشانگرها | پشتیبانی شده؟ تا حدی میتوانید یک نشانگر اضافه کنید و به یک رویداد کلیک پاسخ دهید. همچنین میتوانید آیکونهای نشانگر سفارشی اضافه کنید. امکان کشیدن نشانگر وجود ندارد. نشانگرها در نقشه حالت ساده مسطح هستند و نمیتوان آنها را چرخاند. |
| موقعیت دوربین، زوم و انیمیشن | پشتیبانی شده؟ تا حدی شما میتوانید هدف و بزرگنمایی دوربین را تنظیم کنید، اما نمیتوانید شیب یا جهت را تنظیم کنید. سطح بزرگنمایی در حالت ساده به نزدیکترین عدد صحیح گرد میشود. فراخوانی فراخوانی |
| رویدادهای نقشه | پشتیبانی شده؟ تا حدی حالت ساده از برای غیرفعال کردن رویدادهای کلیک روی نقشه در حالت ساده، میتوانید برای جزئیات، به مستندات رویدادها مراجعه کنید. |
| نقشههای داخلی و ساختمانها | پشتیبانی میشود؟ خیر حالت ساده (Lite mode) همان کاشیهای Maps Static API را نشان میدهد. این بدان معناست که اگر نقشه طبقه داخلی در کاشی پیشفرض قرار گرفته باشد، ظاهر میشود. در غیر این صورت، ظاهر نمیشود. علاوه بر این، نمیتوانید سطح نشان داده شده را تغییر دهید یا یک انتخابگر سطح (level picker) را دستکاری کنید. |
| لایه ترافیک | پشتیبانی میشود؟ خیر GoogleMap.setTrafficEnabled() در حالت ساده پشتیبانی نمیشود. |
| پوششهای زمینی | پشتیبانی میشود؟ خیر GoogleMap.addGroundOverlay() در حالت ساده پشتیبانی نمیشود. |
| روکش کاشی | پشتیبانی میشود؟ خیر GoogleMap.addTileOverlay() در حالت ساده پشتیبانی نمیشود. |
| حرکات | پشتیبانی میشود؟ خیر حالت ساده از حرکات پشتیبانی نمیکند. فعال و غیرفعال کردن حرکات هیچ تاثیری نخواهد داشت. |
| نمای خیابان | پشتیبانی میشود؟ خیر نمای خیابان در حالت ساده پشتیبانی نمیشود. |