الكاميرا والعرض

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
اختَر النظام الأساسي: Android iOS JavaScript

يمكن إمالة الخرائط في حزمة تطوير البرامج (SDK) لتطبيق "خرائط Google" لأجهزة Android وتدويرها باستخدام إيماءات سهلة، ما يتيح للمستخدمين إمكانية تعديل الخريطة باستخدام اتجاه منطقي. على أي مستوى من التكبير/التصغير، يمكنك تحريك الخريطة، أو تغيير منظورها مع القليل من وقت الاستجابة بفضل بصمتها الصغيرة في مربعات الخرائط المستندة إلى المتّجه.

عيّنات تعليمات برمجية

يتضمن مستودع ApiDemos على GitHub عيّنة توضّح ميزات الكاميرا:

المقدمة

كما هو الحال مع "خرائط Google" على الويب، تمثّل حزمة تطوير البرامج (SDK) الخاصة بخدمة "خرائط Google" للأجهزة التي تعمل بنظام التشغيل Android سطح العالم (صورة بانورامية) على شاشة جهازك (طائرة مسطّحة) باستخدام جهاز الإسقاط. في الاتجاه الشرقي والغربي، يتم تكرار الخريطة في نهاية المطاف، حيث يلتف العالم حوله بسلاسة. في الاتجاه الشمالي والجنوبي، تقتصر الخريطة على 85 درجة في الشمال و85 درجة تقريبًا في الجنوب.

ملاحظة: يتميّز إسقاط ماركاتور بعرض محدود طوليًا ولكن يتم تحديد ارتفاع غير محدود بشكل تدريجي. "قطعنا" الصور الأساسية للخريطة باستخدام إسقاط ماركاتور في حوالي +/- 85 درجة لإنشاء مربع شكل الخريطة الناتج، والذي يسمح بطريقة منطقية باختيار المربع.

تسمح لك حزمة تطوير البرامج (SDK) للخرائط لنظام التشغيل Android بتغيير وجهة عرض المستخدم للخريطة من خلال تعديل كاميرا الخريطة.

لن تؤدي التغييرات التي يتم إجراؤها على الكاميرا إلى إجراء أي تغييرات على العلامات أو العناصر المركّبة أو غيرها من الرسومات التي أضفتها، ولكن يمكنك تغيير الإضافات لتلائم العرض الجديد بشكل أفضل.

لأنه يمكنك الاستماع إلى إيماءات المستخدم على الخريطة، يمكنك تغيير الخريطة استجابةً لطلبات المستخدمين. على سبيل المثال، تستجيب طريقة معاودة الاتصال OnMapClickListener.onMapClick() بنقرة واحدة على الخريطة. بما أنّ الطريقة تتلقّى خط الطول وخط العرض لموقع النقر، يمكنك الاستجابة عن طريق التحريك أو التكبير/التصغير إلى هذه النقطة. تتوفر طرق مشابهة للاستجابة للنقر على فقاعة أداة التحديد أو للاستجابة لإيماءة سحب على علامة.

يمكنك أيضًا الاستماع إلى حركات الكاميرا بحيث يتلقّى التطبيق إشعارًا عندما تبدأ الكاميرا في الحركة أو تتحرك حاليًا أو تتوقف عن الحركة. لمعرفة التفاصيل، يُرجى الاطّلاع على دليل أحداث تغيير الكاميرا.

موضع الكاميرا

تم تصميم عرض الخريطة على أنه كاميرا تنظر إلى الأسفل على متن طائرة مسطّحة. يتم تحديد موضع الكاميرا (وبالتالي عرض الخريطة) من خلال الخصائص التالية: الاستهداف (موقع خط العرض/خط الطول) و النقل والإمالة والتكبير/التصغير.

مخطط خصائص الكاميرا

الهدف (الموقع الجغرافي)

هدف الكاميرا هو موقع مركز الخريطة، المحدد على أنه إحداثيات خطوط الطول والعرض.

يمكن أن تتراوح خطوط العرض بين -85 و85 درجة، بما يشمل هاتين القيمتين أيضًا. سيتم تقريب أي قيم أعلى أو أقل من هذا النطاق إلى أقرب قيمة ضمن هذا النطاق. على سبيل المثال، يؤدي تحديد خط العرض 100 إلى ضبط القيمة على 85. يتراوح خط الطول بين -180 و180 درجة، بما يشمل هاتين القيمتين أيضًا. ويتم تضمين القيم التي تتجاوز هذا النطاق أو تقل عنه بحيث تقع ضمن النطاق (-180، 180). على سبيل المثال، سيتم إرفاق 480 و840 و1200 إلى 120 درجة.

الاتجاه (الاتجاه)

يحدد اتجاه الكاميرا اتجاه البوصلة، ويتم قياسه بدرجات من الشمال الحقيقي، بما يتوافق مع الحافة العلوية للخريطة. إذا رسمت خطًا رأسيًا من وسط الخريطة إلى الحافة العلوية من الخريطة، يتوافق الحامل مع عنوان الكاميرا (يتم قياسه بالدرجات) بالنسبة إلى الشمال الأيمن.

يشير التحريك 0 إلى أن الجزء العلوي من الخريطة يشير إلى الشمال صحيح. تعني القيمة التحمل 90 أعلى نقاط الخريطة باتجاه الشرق (90 درجة على البوصلة). تعني القيمة 180 أعلى نقاط الخريطة باتجاه الجنوب.

تتيح لك Maps API تغيير الاتجاه على الخريطة. على سبيل المثال، غالبًا ما يحرّك شخص يقود سيارة خريطة طريق لمحاذاة اتجاهات السفر، بينما يوجّه عادةً المتنزهون الذين يستخدمون خريطة وبوصلة الخريطة بحيث يشير خط عمودي إلى الشمال.

إمالة (زاوية العرض)

تحدّد الإمالة موضع الكاميرا على قوس فوق موضع منتصف الخريطة مباشرةً، ويتم قياسها بالدرجات من النظير (الاتجاه الذي يوجّه أسفل الكاميرا مباشرةً). تتوافق القيمة 0 مع الكاميرا المستديرة المباشرة. تتوافق القيم الأكبر من 0 مع كاميرا تميل نحو الأفق بواسطة العدد المحدّد من الدرجات. عند تغيير زاوية العرض، تظهر الخريطة في المنظور، حيث تظهر عناصر بعيدة، بينما تظهر الميزات القريبة بحجم أكبر. وتوضّح الرسوم التوضيحية التالية ذلك.

في الصور أدناه، تكون زاوية العرض 0 درجة. تعرض الصورة الأولى مخططًا لهذا الموضع. الموضع 1 هو موضع الكاميرا، والموضع 2 هو موضع الخريطة الحالي. تظهر الخريطة الناتجة أسفل هذه الخريطة.

لقطة شاشة لخريطة تم ضبط الكاميرا فيها على زاوية عرض بزاوية 0 درجة، على مستوى تكبير/تصغير 18 درجة.
الخريطة المعروضة هي زاوية العرض التلقائية للكاميرا.
رسم بياني يوضّح الموضع التلقائي للكاميرا، مباشرةً على موضع الخريطة، بزاوية 0 درجة.
تكون زاوية العرض التلقائية للكاميرا.

في الصور أدناه، تبلغ زاوية العرض 45 درجة. تجدر الإشارة إلى أن الكاميرا تتحرك في منتصف القوس بين النفقات الرأسية العلوية (0 درجة) والأرض (90 درجة)، إلى الموضع 3. لا تزال الكاميرا تشير إلى النقطة المركزية للخريطة، ولكن المنطقة التي يمثلها الخط في الموضع 4 مرئية الآن.

لقطة شاشة لخريطة تم وضع الكاميرا فيها على زاوية عرض تبلغ 45 درجة، مع مستوى تكبير/تصغير 18 درجة
الخريطة المعروضة بزاوية عرض 45 درجة.
رسم بياني يوضّح زاوية عرض الكاميرا التي تم ضبطها على 45 درجة، مع استمرار ضبط مستوى التكبير/التصغير على 18 درجة.
زاوية عرض من الكاميرا تصل إلى 45 درجة

لا تزال الخريطة في لقطة الشاشة هذه تتوسّط في النقطة نفسها كما في الخريطة الأصلية، ولكن ظهرت المزيد من الميزات في أعلى الخريطة. ومع زيادة الزاوية بزاوية تتجاوز 45 درجة، تظهر العناصر بين الكاميرا وموقع الخريطة بحجم أكبر نسبيًا، بينما تظهر العناصر خارج موضع الخريطة أصغر حجمًا نسبيًا، ما يؤدي إلى التأثير الثلاثي الأبعاد.

توسيع

يحدد مستوى التكبير أو التصغير للكاميرا حجم الخريطة. في مستويات التكبير أو التصغير الأكبر، يمكن رؤية المزيد من التفاصيل على الشاشة، بينما في مستويات التكبير أو التصغير الصغيرة، يمكن رؤية المزيد من أنحاء العالم على الشاشة. على مستوى التكبير/التصغير 0، يكون مقياس الخريطة مماثلاً لعرض 256dp تقريبًا في جميع أنحاء العالم (وحدات بكسل مستقلة الكثافة).

تؤدي زيادة مستوى التكبير أو التصغير بمقدار 1 إلى مضاعفة عرض الشاشة على الشاشة حول العالم. ومن ثمّ عند مستوى التكبير/التصغير، N يبلغ عرض العالم تقريبًا 256 * 2N بكسل غير مرتبطة بالكثافة. على سبيل المثال، في مستوى التكبير/التصغير 2، يكون عرض العالم بأكمله تقريبًا 1024 بكسل غير مرتبطة بالكثافة.

يجب ألا يكون مستوى التكبير/التصغير عددًا صحيحًا. ويعتمد نطاق مستويات التكبير/التصغير المسموح به على الخريطة على عدد من العوامل، بما في ذلك الاستهداف ونوع الخريطة وحجم الشاشة. سيتم تحويل أي رقم من النطاق إلى أقرب قيمة صالحة صالحة، والتي يمكن أن تكون الحد الأدنى لمستوى التكبير أو التصغير. تعرض القائمة التالية المستوى التقريبي للتفاصيل التي يمكنك توقعها في كل مستوى من مستويات التكبير أو التصغير:

  • 1: العالم
  • 5: اليابسة/القارة
  • 10: المدينة
  • 15: الشوارع
  • 20: مبانٍ
توضّح الصور التالية المظهر المرئي لمستويات التكبير المختلفة:
لقطة شاشة للخريطة بمستوى تكبير/تصغير 5
خريطة على مستوى التكبير 5.
لقطة شاشة للخريطة بمستوى تكبير/تصغير 15
خريطة على مستوى التكبير أو التصغير 15.
لقطة شاشة لخريطة على مستوى التكبير/التصغير 20
خريطة على مستوى التكبير أو التصغير 20.

تحريك الكاميرا

تسمح لك Maps API بتغيير الجزء من العالم الذي يظهر على الخريطة. ويتم ذلك من خلال تغيير موضع الكاميرا (بدلاً من تحريك الخريطة).

عند تغيير الكاميرا، لديك خيار إضافة حركة إلى الكاميرا الناتجة. تتحرك الصورة المتحركة بين سمات الكاميرا الحالية وسمات الكاميرا الجديدة. يمكنك أيضًا التحكم في مدة الصور المتحركة.

لتغيير موضع الكاميرا، عليك تحديد موضع تحريك الكاميرا باستخدام CameraUpdate. تتيح لك Maps API إنشاء العديد من أنواع CameraUpdate المختلفة باستخدام CameraUpdateFactory. تتوفّر الخيارات التالية:

تغيير مستوى التكبير/التصغير وضبط الحد الأدنى/الحد الأقصى للتكبير أو التصغير

CameraUpdateFactory.zoomIn() و CameraUpdateFactory.zoomOut() يمنحك CameraUpdate تغييرًا لمستوى التكبير أو التصغير بمقدار 1.0، مع الاحتفاظ بجميع المواقع الأخرى بالقيمة نفسها.

CameraUpdateFactory.zoomTo(float) يمنحك CameraUpdate تغيير مستوى التكبير/التصغير إلى القيمة المحددة، مع الحفاظ على جميع المواقع الأخرى كما هي.

CameraUpdateFactory.zoomBy(float) وCameraUpdateFactory.zoomBy(float, Point) يمنحك CameraUpdate CameraUpdate يزيد (أو يقل إذا كانت القيمة سالبة) مستوى التكبير أو التصغير بالقيمة المحددة. ويصلح العنصر الآخر النقطة التي تظهر على الشاشة لكي تظل في الموقع نفسه (خط العرض/خط الطول). وبالتالي قد يغيّر الموقع الجغرافي للكاميرا من أجل تحقيق ذلك.

قد يكون من المفيد ضبط الحد الأدنى المفضَّل و/أو الحد الأقصى لمستوى التكبير/التصغير. على سبيل المثال، من المفيد التحكّم في تجربة المستخدم إذا كان تطبيقك يُظهر منطقة محدّدة حول نقطة اهتمام، أو إذا كنت تستخدم تركيبًا مخصّصًا للبلاط مع مجموعة محدودة من مستويات التكبير أو التصغير.

Java


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

      

Kotlin


private lateinit var map: GoogleMap

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

      

يُرجى العِلم أنّ هناك اعتبارات فنية قد تمنع واجهة برمجة التطبيقات من السماح للمستخدمين بالتكبير أو التصغير للغاية. على سبيل المثال، قد يكون الحد الأقصى للتكبير أو التصغير للقمر الصناعي أو التضاريس أقل من مربعات الخرائط الأساسية.

تغيير موضع الكاميرا

هناك طريقتان مناسبتان لتغييرات الموضع الشائعة. 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 السلبية تسبب تحريك الكاميرا للأعلى. تعتمد التمرير على الاتجاه الحالي للكاميرا. على سبيل المثال، إذا كان اتجاه الكاميرا 90 درجة، تكون الجهة الشرقية "أعلى".

ضبط الحدود

ضبط حدود الخريطة

من المفيد أحيانًا تحريك الكاميرا بحيث تكون المنطقة محط الاهتمام بأكملها مرئية بأعلى مستوى تكبير/تصغير ممكن. على سبيل المثال، إذا كنت تعرض جميع محطات الوقود في نطاق خمسة أميال من الموضع الحالي للمستخدم، قد تحتاج إلى تحريك الكاميرا بحيث تكون جميعها مرئية على الشاشة. لإجراء ذلك، عليك أولاً حساب LatLngBounds الذي تريد أن يكون مرئيًا على الشاشة. يمكنك بعد ذلك استخدام CameraUpdateFactory.newLatLngBounds(LatLngBounds bounds, int padding) للحصول على CameraUpdate التي تغيّر موضع الكاميرا بحيث يتناسب LatLngBounds المحدّد تمامًا مع الخريطة، مع مراعاة المساحة المتروكة (بالبكسل) المحدّدة. تضمن CameraUpdate المعروضة أن الفجوة (بالبكسل) بين الحدود المحدّدة وحافة الخريطة ستكون على الأقل مساوية للمساحة المتروكة المحددة. ملاحظة: سيتم إمالة الخريطة وحملها على حد سواء.

Java


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

      

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 واستخدام CameraUpdateFactory.newLatLngZoom(LatLng latLng, float zoom) مع LatLngBounds.طريقة getCenter() ستعرض طريقة getCenter() المركز الجغرافي لـ LatLngBounds.

Java


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

      

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))

      

تساعدك الحمل الزائد على الطريقة newLatLngBounds(boundary, width, height, padding) على تحديد العرض والارتفاع بالبكسل لمستطيل بهدف التوافق مع أبعاد الخريطة. يتم وضع المستطيل بحيث يكون وسطه هو نفسه عرض الخريطة (لأنه إذا كانت الأبعاد المحددة مماثلة لعرض الخريطة، يتزامن المستطيل مع عرض الخريطة). سيؤدّي النقر على CameraUpdate المعروض إلى تحريك الكاميرا بحيث يتم توسيط LatLngBounds المحدّد على الشاشة داخل المستطيل المحدّد بأعلى مستوى تكبير ممكن، مع مراعاة المساحة المتروكة المطلوبة.

ملاحظة: استخدِم الطريقة الأكثر بساطة newLatLngBounds(boundary, padding) لإنشاء CameraUpdate إذا أردت استخدامها لتحريك الكاميرا بعد إجراء الخريطة. أثناء التنسيق، تحسب واجهة برمجة التطبيقات حدود عرض الخريطة اللازمة لعرض مربّع الربط بشكل صحيح. بالإضافة إلى ذلك، يمكنك استخدام CameraUpdate التي تعرضها الطريقة الأكثر تعقيدًا newLatLngBounds(boundary, width, height, padding) في أي وقت، حتى قبل إعداد الخريطة، لأن واجهة برمجة التطبيقات تحسب حدود العرض من الوسيطات التي تمرِّرها.

حصر نطاق العرض الشامل للمستخدم على منطقة معيّنة

في السيناريوهات السابقة، يمكنك ضبط حدود الخريطة، ولكن يمكن للمستخدم التمرير أو التحريك خارج هذه الحدود. بدلاً من ذلك، يمكنك تقييد حدود المركز/خط الطول للنقطة المحورية على الخريطة (هدف الكاميرا) حتى يتمكن المستخدمون من التمرير فقط والتحرُّك داخل هذه الحدود. على سبيل المثال، قد يحتاج تطبيق البيع بالتجزئة لمركز تسوق أو مطار إلى تقييد الخريطة إلى حدود معينة، ما يسمح للمستخدمين بالتمرير والتنقّل داخل هذه الحدود.

Java


// 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);

      

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)

      

يوضّح المخطّط التالي سيناريو عندما يتم تقييد استهداف الكاميرا على منطقة أكبر قليلاً من إطار العرض. يمكن للمستخدم التمرير والعرض الشامل، شرط أن يظل هدف الكاميرا داخل المنطقة المحدّدة. يمثّل التقاطع هدف الكاميرا:

رسم بياني يوضّح كاميرا LatLngBounds التي يزيد حجمها عن
      إطار العرض.

تملأ الخريطة دائمًا إطار العرض، حتى إذا كان ذلك يؤدي إلى ظهور إطار العرض للمناطق خارج الحدود المحددة. على سبيل المثال، إذا وضعت هدف الكاميرا في زاوية من المنطقة المرتبطة، ستظهر المنطقة التي تقع خارج الزاوية في إطار العرض ولكن لا يمكن للمستخدمين التمرير لأسفل للوصول إلى تلك المنطقة. ويوضّح المخطّط التالي هذا السيناريو. ويمثل الصليب هدف الكاميرا:

رسم بياني يوضّح هدف الكاميرا موضوع في أسفل يسار الكاميرا
      LatLngBounds.

في المخطط التالي، يفرض هدف الكاميرا قيودًا كثيرة جدًا، ما يتيح للمستخدم فرصة ضئيلة في تصفّح الخريطة أو عرضها بشكل شامل. ويمثّل شكل الصليب هدف الكاميرا:

رسم بياني يوضّح كاميرا LatLngBounds التي تكون أصغر من إطار العرض.

جارٍ تعديل وضع الكاميرا

لتطبيق CameraUpdate على الخريطة، يمكنك تحريك الكاميرا فورًا أو تحريكها بسلاسة. لتحريك الكاميرا في الحال باستخدام CameraUpdate المحدد، يمكنك الاتصال GoogleMap.moveCamera(CameraUpdate).

يمكنك أن تجعل تجربة المستخدم أكثر إرضاءً، خاصةً بالنسبة إلى الحركات القصيرة، عن طريق تحريك التغيير. لإجراء ذلك بدلاً من الاتصال GoogleMap.moveCamera اتصل بالرقم GoogleMap.animateCamera. سيتم نقل الخريطة بسلاسة إلى السمات الجديدة. يقدم النموذج الأكثر تفصيلاً لهذه الطريقة، GoogleMap.animateCamera(cameraUpdate, duration, callback)، ثلاث وسيطات:

cameraUpdate
صورة CameraUpdate لوصف مكان تحريك الكاميرا.
callback
كائن يستخدم GoogleMap.CancellableCallback. تحدّد هذه الواجهة العامة للتعامل مع المهام طريقتَين: "onCancel()" و"onFinish()".
onFinish()
تم استدعاء الصورة المتحركة عند اكتمالها بدون انقطاع.
onCancel()

تم استدعاء الصورة المتحركة في حال مقاطعة الفيديو من خلال طلب stopAnimation() أو بدء حركة كاميرا جديدة.

بدلاً من ذلك، يمكن أن يحدث ذلك أيضًا إذا اتصلت بـ GoogleMap.stopAnimation().

duration
المدة المطلوبة للرسوم المتحركة، بالمللي ثانية، كـ int.

توضح مقتطفات الرمز التالية بعض الطرق الشائعة لتحريك الكاميرا.

Java


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));

      

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))