دوربین و نما

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

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

نمونه‌های کد

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

مقدمه

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

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

کیت توسعه نرم‌افزار Google Maps برای Android به شما امکان می‌دهد با اصلاح دوربین نقشه، نقطه دید کاربر را تغییر دهید.

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

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

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

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

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

نمودار ویژگی‌های دوربین

هدف (مکان)

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

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

جهت (جهت‌یابی)

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

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

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

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

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

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

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

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

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

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

بزرگ‌نمایی

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

افزایش سطح بزرگ‌نمایی به‌اندازه ۱، عرض جهان را در صفحه‌نمایش دوبرابر می‌کند. بنابراین در سطح بزرگ‌نمایی N، عرض جهان تقریباً 256 * 2N 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 باعث می‌شود دوربین به پایین حرکت کند، به‌طوری‌که به‌نظر می‌رسد نقشه به بالا حرکت کرده است. برعکس، مقادیر منفی x باعث می‌شود دوربین به چپ حرکت کند، به‌طوری‌که به‌نظر می‌رسد نقشه به راست حرکت کرده است و مقادیر منفی y باعث می‌شود دوربین به بالا حرکت کند. پیمایش نسبت به جهت فعلی دوربین است. برای مثال، اگر زاویه دوربین ۹۰ درجه باشد، شرق «بالا» است.

تعیین مرزها

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

گاهی اوقات مفید است که دوربین را طوری حرکت دهید که کل منطقه موردنظر در بالاترین سطح بزرگ‌نمایی ممکن قابل‌مشاهده باشد. برای مثال، اگر همه پمپ بنزین‌های موجود در فاصله پنج مایلی از موقعیت فعلی کاربر را نمایش می‌دهید، ممکن است بخواهید دوربین را طوری حرکت دهید که همه آن‌ها در صفحه نمایان باشند. برای انجام این کار، ابتدا 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 دوربین نشان می‌دهد.

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

نموداری که 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));