دوربین و نما

پلاتفرم را انتخاب کنید: Android iOS JavaScript

نقشه‌ها در «کیت توسعه نرم‌افزار Google Maps برای Android» را می‌توان به‌راحتی با اشاره کج کرد و چرخاند، که به کاربران امکان می‌دهد نقشه را با جهتی که برایشان منطقی است تنظیم کنند. در هر سطح بزرگ‌نمایی، می‌توانید نقشه را حرکت دهید یا چشم‌انداز آن را با تأخیر بسیار کمی تغییر دهید، که این به‌دلیل ردپای کوچک‌تر کاشی‌های نقشه برداری برداری است.

نمونه‌های کد

مخزن ApiDemos در GitHub شامل نمونه‌ای است که ویژگی‌های دوربین را نشان می‌دهد:

مقدمه

مانند Google Maps در وب، «کیت توسعه نرم‌افزار Maps برای Android» سطح زمین (یک کره) را در صفحه دستگاهتان (یک صفحه تخت) بااستفاده از تصویرسازی مرکاتور نشان می‌دهد. در جهت شرق و غرب، نقشه به‌صورت بی‌نهایت تکرار می‌شود زیرا جهان به‌طور یکپارچه دور خود می‌پیچد. در جهت شمال و جنوب، نقشه به تقریباً ۸۵ درجه شمالی و ۸۵ درجه جنوبی محدود می‌شود.

توجه: تصویرسازی مرکاتور در طول دارای پهنای محدود و در عرض دارای ارتفاع نامحدود است. ما تصاویر نقشه مبنا را بااستفاده از تصویر مرکاتور در حدود +/- ۸۵ درجه «قطع می‌کنیم» تا شکل نقشه حاصل مربع شود، که این امر منطق ساده‌تری را برای انتخاب کاشی فراهم می‌کند.

«کیت توسعه نرم‌افزار Maps ویژه Android» به شما امکان می‌دهد با تغییر دادن دوربین نقشه، دیدگاه کاربر را نسبت به نقشه تغییر دهید.

تغییرات دوربین هیچ تغییری در نشانگرها، هم‌پوشانی‌ها، یا سایر گرافیک‌هایی که اضافه کرده‌اید ایجاد نمی‌کند، اگرچه ممکن است بخواهید موارد اضافه‌شده را تغییر دهید تا با نمای جدید بهتر مطابقت داشته باشند.

ازآنجایی‌که می‌توانید به اشاره‌های کاربر روی نقشه گوش دهید، می‌توانید نقشه را در پاسخ به درخواست‌های کاربر تغییر دهید. برای مثال، روش فراخوانی OnMapClickListener.onMapClick() به یک تک‌ضرب روی نقشه پاسخ می‌دهد. ازآنجایی‌که این روش طول و عرض جغرافیایی مکان ضربه را دریافت می‌کند، می‌توانید با پیمایش یا بزرگ‌نمایی به آن نقطه پاسخ دهید. روش‌های مشابهی برای پاسخ دادن به تک‌ضرب‌ها روی حباب نشانگر یا برای پاسخ دادن به اشاره کشیدن روی نشانگر دردسترس است.

همچنین می‌توانید به حرکات دوربین گوش دهید تا وقتی دوربین شروع به حرکت می‌کند، درحال حرکت است، یا حرکتش متوقف می‌شود، برنامه‌تان اعلانی دریافت کند. برای جزئیات، راهنمای رویدادهای تغییر دوربین را ببینید.

موقعیت دوربین

نمای نقشه به‌عنوان دوربینی مدل‌سازی شده است که به صفحه‌ای تخت نگاه می‌کند. موقعیت دوربین (و درنتیجه پرداز کردن نقشه) با ویژگی‌های زیر مشخص می‌شود: هدف (مکان عرض/طول جغرافیایی)، سمت، شیب، و بزرگ‌نمایی.

نمودار مشخصات دوربین

هدف (مکان)

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

عرض جغرافیایی می‌تواند بین ۸۵- و ۸۵ درجه باشد. مقادیر بالاتر یا پایین‌تر از این محدوده به نزدیک‌ترین مقدار در این محدوده محدود خواهند شد. برای مثال، اگر عرض جغرافیایی را روی ۱۰۰ مشخص کنید، مقدار روی ۸۵ تنظیم خواهد شد. طول جغرافیایی در محدوده ۱۸۰- تا ۱۸۰ درجه، شامل این دو مقدار، قرار دارد. مقادیر بالاتر یا پایین‌تر از این محدوده به‌گونه‌ای پیچیده می‌شوند که در محدوده (۱۸۰-، ۱۸۰) قرار گیرند. برای مثال، ۴۸۰، ۸۴۰ و ۱۲۰۰ همگی به ۱۲۰ درجه تبدیل می‌شوند.

سمت (جهت)

جهت دوربین، جهت قطب‌نما را مشخص می‌کند که برحسب درجه از شمال واقعی اندازه‌گیری می‌شود و با لبه بالایی نقشه مطابقت دارد. اگر خطی عمودی از مرکز نقشه به لبه بالایی نقشه بکشید، جهت با عنوان دوربین (اندازه‌گیری‌شده به درجه) نسبت به شمال واقعی مطابقت دارد.

زاویه ۰ به این معنی است که بالای نقشه به شمال واقعی اشاره می‌کند. مقدار جهت ۹۰ یعنی بالای نقشه به‌سمت شرق است (۹۰ درجه روی قطب‌نما). مقدار ۱۸۰ یعنی بالای نقشه به‌سمت جنوب است.

Maps API به شما امکان می‌دهد جهت نقشه را تغییر دهید. برای مثال، فردی که رانندگی می‌کند اغلب نقشه راه را می‌چرخاند تا آن را با جهت سفر خود هماهنگ کند، درحالی‌که کوهنوردانی که از نقشه و قطب‌نما استفاده می‌کنند معمولاً نقشه را طوری جهت‌دهی می‌کنند که یک خط عمودی به سمت شمال باشد.

شیب (زاویه دید)

شیب موقعیت دوربین را روی کمانی مستقیماً بالای موقعیت مرکز نقشه، که با درجه از نظیر (جهتی که مستقیماً زیر دوربین را نشان می‌دهد) اندازه‌گیری می‌شود، تعریف می‌کند. مقدار ۰ مربوط به دوربینی است که مستقیماً به‌سمت پایین گرفته شده است. مقادیر بزرگ‌تر از ۰ مربوط به دوربینی است که به‌اندازه تعداد درجه مشخص‌شده به‌سمت افق زاویه دارد. وقتی زاویه دید را تغییر می‌دهید، نقشه به‌صورت پرسپکتیو نشان داده می‌شود، به‌طوری که عارضه‌های دورتر کوچک‌تر و عارضه‌های نزدیک‌تر بزرگ‌تر به‌نظر می‌رسند. تصویرهای زیر این موضوع را نشان می‌دهد.

در تصاویر زیر، زاویه دید ۰ درجه است. تصویر اول شماتیکی از این موضوع را نشان می‌دهد؛ موقعیت ۱ موقعیت دوربین و موقعیت ۲ موقعیت کنونی نقشه است. نقشه حاصل در زیر آن نشان داده می‌شود.

نماگرفتی از نقشه با دوربین در زاویه دید ۰ درجه و سطح بزرگ‌نمایی ۱۸.
نقشه با زاویه دید پیش‌فرض دوربین نمایش داده می‌شود.
نموداری که موقعیت پیش‌فرض دوربین را مستقیماً بالای موقعیت نقشه، با زاویه ۰ درجه نشان می‌دهد.
زاویه دید پیش‌فرض دوربین.

در تصاویر زیر، زاویه دید ۴۵ درجه است. توجه کنید که دوربین تا نیمه در امتداد قوسی بین بالای سر (۰ درجه) و زمین (۹۰ درجه) حرکت می‌کند تا به موقعیت ۳ برسد. دوربین همچنان به‌سمت نقطه مرکزی نقشه است، اما منطقه‌ای که با خط در موقعیت ۴ نشان داده شده است اکنون قابل‌مشاهده است.

نماگرفتی از نقشه با دوربینی که در زاویه دید ۴۵ درجه و در سطح بزرگ‌نمایی ۱۸ قرار گرفته است.
نقشه با زاویه دید ۴۵ درجه نمایش داده می‌شود.
نموداری که نشان می‌دهد زاویه دید دوربین روی ۴۵ درجه تنظیم شده است، درحالی‌که سطح بزرگ‌نمایی هنوز روی ۱۸ تنظیم شده است.
زاویه دید دوربین ۴۵ درجه است.

نقشه در این نماگرفت همچنان روی همان نقطه نقشه اصلی متمرکز است، اما ویژگی‌های بیشتری در بالای نقشه ظاهر شده است. با افزایش زاویه به بیش از ۴۵ درجه، عوارض بین دوربین و موقعیت نقشه به‌طور متناسب بزرگ‌تر ظاهر می‌شوند، درحالی‌که عوارض فراتر از موقعیت نقشه به‌طور متناسب کوچک‌تر ظاهر می‌شوند و جلوه‌ای سه‌بعدی ایجاد می‌کنند.

بزرگ‌نمایی

سطح بزرگ‌نمایی دوربین مقیاس نقشه را تعیین می‌کند. در سطوح زوم‌پیش بزرگ‌تر، جزئیات بیشتری در صفحه‌نمایش دیده می‌شود، درحالی‌که در سطوح زوم‌پیش کوچک‌تر، بخش بیشتری از جهان در صفحه‌نمایش دیده می‌شود. در سطح بزرگ‌نمایی ۰، مقیاس نقشه به‌گونه‌ای است که کل جهان عرضی تقریباً معادل ۲۵۶ پیکسل مستقل از تراکم (dp) دارد.

افزایش سطح بزرگ‌نمایی به میزان ۱، عرض جهان را در صفحه دوبرابر می‌کند. بنابراین در سطح بزرگ‌نمایی N، عرض جهان تقریباً ‫۲۵۶ * ۲N dp است. برای مثال، در سطح بزرگ‌نمایی ۲، کل جهان تقریباً ۱۰۲۴dp عرض دارد.

سطح بزرگ‌نمایی لازم نیست عدد صحیح باشد. محدوده سطوح بزرگ‌نمایی مجاز در نقشه به عوامل متعددی ازجمله هدف، نوع نقشه، و اندازه صفحه‌نمایش بستگی دارد. هر عددی خارج از این محدوده به نزدیک‌ترین مقدار معتبر بعدی تبدیل می‌شود، که می‌تواند حداقل سطح بزرگ‌نمایی یا حداکثر سطح بزرگ‌نمایی باشد. فهرست زیر سطح تقریبی جزئیاتی را نشان می‌دهد که می‌توانید انتظار داشته باشید در هر سطح بزرگ‌نمایی ببینید:

  • ‫۱: جهان
  • ۵: خشکی/قاره
  • ‫۱۰: شهر
  • ‫۱۵: خیابان‌ها
  • ‫۲۰: ساختمان‌ها
تصاویر زیر ظاهر بصری سطوح بزرگ‌نمایی مختلف را نشان می‌دهد:
نماگرفت نقشه در سطح بزرگ‌نمایی ۵
نقشه‌ای در سطح بزرگ‌نمایی ۵.
نماگرفت از نقشه در سطح بزرگ‌نمایی ۱۵
نقشه‌ای در سطح بزرگ‌نمایی ۱۵.
نماگرفت نقشه در سطح بزرگ‌نمایی ۲۰
نقشه‌ای در سطح بزرگ‌نمایی ۲۰.

حرکت دادن دوربین

Maps API به شما امکان می‌دهد بخشی از جهان را که در نقشه قابل‌مشاهده است تغییر دهید. این کار با تغییر دادن موقعیت دوربین (برخلاف حرکت دادن نقشه) انجام می‌شود.

وقتی دوربین را تغییر می‌دهید، می‌توانید حرکت دوربین حاصل را پویانمایی کنید. پویانمایی بین ویژگی‌های دوربین فعلی و ویژگی‌های دوربین جدید درون‌یابی می‌کند. همچنین می‌توانید مدت پویانمایی را کنترل کنید.

برای تغییر موقعیت دوربین، باید بااستفاده از CameraUpdate مشخص کنید که می‌خواهید دوربین را به کجا منتقل کنید. ‫Maps API به شما امکان می‌دهد انواع مختلفی از CameraUpdate را بااستفاده از CameraUpdateFactory ایجاد کنید. گزینه‌های زیر دردسترس است:

تغییر سطح بزرگ‌نمایی و تنظیم حداقل/حداکثر بزرگ‌نمایی

CameraUpdateFactory.zoomIn() و CameraUpdateFactory.zoomOut() CameraUpdate را به شما می‌دهد که سطح بزرگ‌نمایی را ۱٫۰ تغییر می‌دهد و همه مشخصه‌های دیگر را یکسان نگه می‌دارد.

CameraUpdateFactory.zoomTo(float) به شما CameraUpdate می‌دهد که سطح بزرگ‌نمایی را به مقدار داده‌شده تغییر می‌دهد، درحالی‌که همه ویژگی‌های دیگر را یکسان نگه می‌دارد.

CameraUpdateFactory.zoomBy(float) و CameraUpdateFactory.zoomBy(float, Point) CameraUpdate را به شما می‌دهد که سطح بزرگ‌نمایی را به‌اندازه مقدار داده‌شده افزایش (یا اگر مقدار منفی باشد، کاهش) می‌دهد. مورد دوم نقطه داده‌شده را روی صفحه ثابت می‌کند به‌طوری‌که در همان مکان (طول/عرض جغرافیایی) باقی می‌ماند و بنابراین ممکن است برای دستیابی به این هدف، مکان دوربین را تغییر دهد.

ممکن است تنظیم سطح بزرگ‌نمایی ترجیحی حداقل و/یا حداکثر برایتان مفید باشد. برای مثال، اگر برنامه‌تان منطقه تعریف‌شده‌ای را در اطراف نقطه موردعلاقه نشان می‌دهد یا اگر از رونهاد کاشی سفارشی با مجموعه محدودی از سطوح بزرگ‌نمایی استفاده می‌کنید، این کار برای کنترل تجربه کاربر مفید است.

Kotlin

map.setMinZoomPreference(6.0f)
map.setMaxZoomPreference(14.0f)

      

جاوا

map.setMinZoomPreference(6.0f);
map.setMaxZoomPreference(14.0f);

      

توجه داشته باشید که ملاحظات فنی وجود دارد که ممکن است مانع از این شود که API به کاربران اجازه دهد بیش‌ازحد پایین یا بیش‌ازحد بالا بزرگ‌نمایی کنند. برای مثال، ماهواره یا عوارض زمین ممکن است حداکثر بزرگ‌نمایی کمتری نسبت به کاشی‌های نقشه مبنا داشته باشد.

تغییر دادن موقعیت دوربین

دو روش آسان برای تغییرات موقعیت رایج وجود دارد. CameraUpdateFactory.newLatLng(LatLng) یک CameraUpdate به شما می‌دهد که عرض و طول جغرافیایی دوربین را تغییر می‌دهد، درحالی‌که همه ویژگی‌های دیگر را حفظ می‌کند. CameraUpdateFactory.newLatLngZoom(LatLng, float) به شما CameraUpdate می‌دهد که عرض جغرافیایی، طول جغرافیایی، و بزرگ‌نمایی دوربین را تغییر می‌دهد، و درعین‌حال همه ویژگی‌های دیگر را حفظ می‌کند.

برای انعطاف‌پذیری کامل در تغییر موقعیت دوربین، از CameraUpdateFactory.newCameraPosition(CameraPosition) استفاده کنید که CameraUpdate را دراختیارتان قرار می‌دهد و دوربین را به موقعیت داده‌شده منتقل می‌کند. CameraPosition را می‌توان مستقیماً بااستفاده از new CameraPosition() یا با CameraPosition.Builder بااستفاده از new CameraPosition.Builder() دریافت کرد.

حرکت عرضی (پیمایش)

CameraUpdateFactory.scrollBy(float, float) به شما یک CameraUpdate می‌دهد که عرض و طول جغرافیایی دوربین را تغییر می‌دهد به‌طوری که نقشه به تعداد پیکسل‌های مشخص‌شده حرکت می‌کند. مقدار x مثبت باعث می‌شود دوربین به راست حرکت کند، به‌طوری‌که به‌نظر می‌رسد نقشه به چپ حرکت کرده است. مقدار مثبت y باعث می‌شود دوربین به پایین حرکت کند، بنابراین به‌نظر می‌رسد که نقشه به بالا حرکت کرده است. Conversely, negative x values cause the camera to move to the left, so that the map appears to have moved right and negative y values cause the camera to move up. پیمایش نسبت به جهت فعلی دوربین است. برای مثال، اگر دوربین زاویه ۹۰ درجه داشته باشد، شرق «بالا» است.

تعیین مرزها

تنظیم مرزهای نقشه

گاهی اوقات مفید است که دوربین را طوری حرکت دهید که کل منطقه موردنظر در بالاترین سطح بزرگ‌نمایی ممکن قابل‌مشاهده باشد. برای مثال، اگر همه پمپ بنزین‌های واقع در پنج مایلی موقعیت کنونی کاربر را نمایش می‌دهید، شاید بخواهید دوربین را طوری حرکت دهید که همه آن‌ها در صفحه نمایان باشند. برای انجام این کار، ابتدا LatLngBounds را که می‌خواهید در صفحه قابل‌مشاهده باشد محاسبه کنید. سپس می‌توانید از CameraUpdateFactory.newLatLngBounds(LatLngBounds bounds, int padding) برای دریافت CameraUpdate استفاده کنید که موقعیت دوربین را به‌گونه‌ای تغییر می‌دهد که LatLngBounds داده‌شده کاملاً در نقشه جای بگیرد و حاشیه (به پیکسل) مشخص‌شده را درنظر می‌گیرد. CameraUpdate برگردانده‌شده تضمین می‌کند که فاصله (به پیکسل) بین مرزهای داده‌شده و لبه نقشه حداقل به‌اندازه حاشیه داخلی مشخص‌شده باشد. توجه داشته باشید که شیب و جهت نقشه هر دو ۰ خواهد بود.

Kotlin

val australiaBounds = LatLngBounds(
    LatLng((-44.0), 113.0),  // SW bounds
    LatLng((-10.0), 154.0) // NE bounds
)
map.moveCamera(CameraUpdateFactory.newLatLngBounds(australiaBounds, 0))

      

جاوا

LatLngBounds australiaBounds = new LatLngBounds(
        new LatLng(-44, 113), // SW bounds
        new LatLng(-10, 154)  // NE bounds
);
map.moveCamera(CameraUpdateFactory.newLatLngBounds(australiaBounds, 0));

      

قرار دادن نقشه در مرکز یک منطقه

در برخی موارد، ممکن است بخواهید دوربین خود را به‌جای اینکه مرزهای شدید را دربر بگیرد، در محدوده خاصی در مرکز قرار دهید. برای مثال، برای اینکه دوربین را روی کشوری در مرکز قرار دهید درحالی‌که بزرگ‌نمایی ثابت باشد. در این مورد، می‌توانید از روش مشابهی استفاده کنید، با ایجاد LatLngBounds و استفاده از CameraUpdateFactory.newLatLngZoom(LatLng latLng, float zoom) با LatLngBounds.روش getCenter(). روش getCenter()‎ مرکز جغرافیایی LatLngBounds را برمی‌گرداند.

Kotlin

val australiaBounds = LatLngBounds(
    LatLng((-44.0), 113.0),  // SW bounds
    LatLng((-10.0), 154.0) // NE bounds
)
map.moveCamera(CameraUpdateFactory.newLatLngZoom(australiaBounds.center, 10f))

      

جاوا

LatLngBounds australiaBounds = new LatLngBounds(
        new LatLng(-44, 113), // SW bounds
        new LatLng(-10, 154)  // NE bounds
);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(australiaBounds.getCenter(), 10));

      

سربار روش، newLatLngBounds(boundary, width, height, padding) به شما امکان می‌دهد عرض و ارتفاع مستطیل را به پیکسل مشخص کنید، با این هدف که این مقادیر با ابعاد نقشه مطابقت داشته باشند. مستطیل به‌گونه‌ای قرار می‌گیرد که مرکز آن با مرکز نمای نقشه یکسان باشد (به‌طوری‌که اگر ابعاد مشخص‌شده با ابعاد نمای نقشه یکسان باشد، مستطیل با نمای نقشه منطبق می‌شود). ‫ CameraUpdate برگشتی دوربین را به‌گونه‌ای حرکت می‌دهد که LatLngBounds مشخص‌شده در مستطیل داده‌شده در بیشترین سطح ممکن زوم در مرکز صفحه قرار بگیرد و حاشیه موردنیاز درنظر گرفته شود.

توجه: فقط از روش ساده‌تر newLatLngBounds(boundary, padding) برای تولید CameraUpdate استفاده کنید اگر قرار است از آن برای حرکت دادن دوربین پس‌از چیدمان نقشه استفاده شود. درطول چیدمان، API مرزهای نمایش نقشه را که برای نمایش صحیح کادر محدودکننده لازم است محاسبه می‌کند. درمقابل، می‌توانید از CameraUpdate که با روش پیچیده‌تر newLatLngBounds(boundary, width, height, padding) برگردانده شده است در هر زمانی استفاده کنید، حتی قبل‌از اینکه نقشه تحت چیدمان قرار گرفته باشد، زیرا API مرزهای نمایش را از آرگومان‌هایی که ارسال می‌کنید محاسبه می‌کند.

محدود کردن حرکت افقی کاربر به ناحیه‌ای مشخص

در سناریوهای بالا، شما مرزهای نقشه را تنظیم می‌کنید اما کاربر می‌تواند به خارج از این مرزها پیمایش یا حرکت کند. درعوض، شاید بخواهید مرزهای مرکز طول/عرض جغرافیایی کانون توجه نقشه (هدف دوربین) را محدود کنید تا کاربران فقط بتوانند در این مرزها پیمایش و حرکت افقی کنند. برای مثال، یک برنامه خرده‌فروشی برای مرکز خرید یا فرودگاه ممکن است بخواهد نقشه را به محدوده خاصی محدود کند، تا کاربران بتوانند در آن محدوده پیمایش و حرکت کنند.

Kotlin

// Create a LatLngBounds that includes the city of Adelaide in Australia.
val adelaideBounds = LatLngBounds(
    LatLng(-35.0, 138.58),  // SW bounds
    LatLng(-34.9, 138.61) // NE bounds
)

// Constrain the camera target to the Adelaide bounds.
map.setLatLngBoundsForCameraTarget(adelaideBounds)

      

جاوا

// Create a LatLngBounds that includes the city of Adelaide in Australia.
LatLngBounds adelaideBounds = new LatLngBounds(
        new LatLng(-35.0, 138.58), // SW bounds
        new LatLng(-34.9, 138.61)  // NE bounds
);

// Constrain the camera target to the Adelaide bounds.
map.setLatLngBoundsForCameraTarget(adelaideBounds);

      

نمودار زیر سناریویی را نشان می‌دهد که در آن هدف دوربین به ناحیه‌ای که کمی بزرگ‌تر از درگاه دید است محدود شده است. کاربر می‌تواند پیمایش و حرکت افقی کند، به‌شرطی که هدف دوربین در محدوده مرز باقی بماند. علامت به‌علاوه نشان‌دهنده نشان‌گاه دوربین است:

نموداری که LatLngBounds دوربین را نشان می‌دهد که بزرگ‌تر از
      نمای دید است.

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

نموداری که هدف دوربین را در گوشه پایین سمت راست
      «محدوده طول و عرض جغرافیایی» دوربین نشان می‌دهد.

در نمودار زیر، هدف دوربین دارای محدوده بسیار محدودی است و به کاربر فرصت بسیار کمی برای پیمایش یا حرکت دادن نقشه می‌دهد. علامت ضربدر نشان‌دهنده نشان‌گاه دوربین است:

نموداری که LatLngBounds دوربین را نشان می‌دهد که از
      درگاه دید کوچک‌تر است.

درحال به‌روزرسانی نمای دوربین

برای اعمال CameraUpdate روی نقشه، می‌توانید دوربین را فوراً حرکت دهید یا دوربین را به‌آرامی پویانمایی کنید. برای حرکت دادن فوری دوربین با CameraUpdate داده‌شده، می‌توانید GoogleMap.moveCamera(CameraUpdate) را فراخوانی کنید.

با پویانمایی کردن تغییر، می‌توانید تجربه کاربری را به‌ویژه برای حرکت‌های کوتاه لذت‌بخش‌تر کنید. برای انجام این کار به‌جای تماس گرفتن GoogleMap.moveCamera تماس بگیرید GoogleMap.animateCamera. نقشه به‌آرامی به مشخصه‌های جدید منتقل خواهد شد. پرجزئیات‌ترین شکل این روش، GoogleMap.animateCamera(cameraUpdate, duration, callback)، سه آرگومان ارائه می‌دهد:

cameraUpdate
CameraUpdate که توضیح می‌دهد دوربین را به کجا حرکت دهید.
callback
شیئی که GoogleMap.CancellableCallback را پیاده‌سازی می‌کند. این میانای تعمیم‌یافته برای رسیدگی به تکالیف دو روش `onCancel()` ‎ و `onFinished()`‎ را تعریف می‌کند. برای پویانمایی، این روش‌ها در شرایط زیر فراخوانی می‌شوند:
onFinish()
اگر پویانمایی بدون وقفه تکمیل شود، فراخوانی می‌شود.
onCancel()

اگر پویانمایی با فراخوانی stopAnimation() یا شروع حرکت دوربین جدیدی قطع شود، فراخوانی می‌شود.

همچنین، اگر با GoogleMap.stopAnimation() تماس بگیرید، ممکن است این اتفاق بیفتد.

duration
مدت‌زمان مطلوب پویانمایی، برحسب میلی‌ثانیه، به‌عنوان int.

تکه‌کدهای زیر برخی‌از روش‌های رایج برای حرکت دادن دوربین را نشان می‌دهد.

Kotlin

val sydney = LatLng(-33.88, 151.21)
val mountainView = LatLng(37.4, -122.1)

// Move the camera instantly to Sydney with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 15f))

// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomIn())

// Zoom out to zoom level 10, animating with a duration of 2 seconds.
map.animateCamera(CameraUpdateFactory.zoomTo(10f), 2000, null)

// Construct a CameraPosition focusing on Mountain View and animate the camera to that position.
val cameraPosition = CameraPosition.Builder()
    .target(mountainView) // Sets the center of the map to Mountain View
    .zoom(17f)            // Sets the zoom
    .bearing(90f)         // Sets the orientation of the camera to east
    .tilt(30f)            // Sets the tilt of the camera to 30 degrees
    .build()              // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition))

      

جاوا

LatLng sydney = new LatLng(-33.88, 151.21);
LatLng mountainView = new LatLng(37.4, -122.1);

// Move the camera instantly to Sydney with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 15));

// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomIn());

// Zoom out to zoom level 10, animating with a duration of 2 seconds.
map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);

// Construct a CameraPosition focusing on Mountain View and animate the camera to that position.
CameraPosition cameraPosition = new CameraPosition.Builder()
        .target(mountainView)      // Sets the center of the map to Mountain View
        .zoom(17)                   // Sets the zoom
        .bearing(90)                // Sets the orientation of the camera to east
        .tilt(30)                   // Sets the tilt of the camera to 30 degrees
        .build();                   // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));