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

اختيار النظام الأساسي: Android‏ iOS‏ JavaScript‏

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

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

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

مقدمة

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

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

تتيح لك حزمة تطوير البرامج بالاستناد إلى بيانات خرائط Google للتطبيقات المتوافقة مع 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 درجة، تظهر المعالم بين الكاميرا وموضع الخريطة أكبر نسبيًا، بينما تظهر المعالم التي تقع خارج موضع الخريطة أصغر نسبيًا، ما ينتج عنه تأثير ثلاثي الأبعاد.

Zoom

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

تؤدي زيادة مستوى التكبير بمقدار 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 يزيد (أو يقلّل، إذا كانت القيمة سالبة) مستوى التكبير بالقيمة المحدّدة. يُثبِّت الخيار الأخير النقطة المحدّدة على الشاشة بحيث تظل في الموقع الجغرافي نفسه (خط العرض/خط الطول)، وبالتالي قد يغيّر الموقع الجغرافي للكاميرا لتحقيق ذلك.

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

Kotlin

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

      

جافا

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

تقييد تحريك المستخدم إلى منطقة معيّنة

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

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