يمكن إمالة الخرائط وتدويرها في حزمة تطوير البرامج بالاستناد إلى بيانات خرائط Google للتطبيقات المتوافقة مع Android باستخدام إيماءات سهلة، ما يمنح المستخدمين إمكانية ضبط الخريطة باتجاه مناسب لهم. على أي مستوى تكبير/تصغير، يمكنك تحريك الخريطة أو تغيير منظورها مع تأخير بسيط جدًا بفضل المساحة الأصغر لمربّعات الخرائط المستندة إلى المتجهات.
عيّنات تعليمات برمجية
يتضمّن مستودع ApiDemos على GitHub عينة توضّح ميزات الكاميرا:
- CameraDemoActivity - Kotlin: تغيير موضع الكاميرا
- CameraDemoActivity - Java: تغيير موضع الكاميرا
مقدمة
على غرار "خرائط 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 هو موضع الخريطة الحالي. تظهر الخريطة الناتجة أدناه.
|
|
في الصور أدناه، تبلغ زاوية العرض 45 درجة. لاحِظ أنّ الكاميرا تتحرّك في منتصف قوس بين الأعلى مباشرةً (0 درجة) والأرض (90 درجة)، إلى الموضع 3. لا تزال الكاميرا موجّهة إلى نقطة مركز الخريطة، ولكنّ المنطقة التي يمثّلها الخط في الموضع 4 أصبحت مرئية الآن.
|
|
لا تزال الخريطة في لقطة الشاشة هذه متمركزة حول النقطة نفسها كما في الخريطة الأصلية، ولكن ظهرت المزيد من الميزات في أعلى الخريطة. عند زيادة الزاوية إلى ما بعد 45 درجة، تظهر الميزات بين الكاميرا وموضع الخريطة أكبر حجمًا بشكل متناسب، بينما تظهر الميزات ما بعد موضع الخريطة أصغر حجمًا بشكل متناسب، ما يؤدي إلى ظهور تأثير ثلاثي الأبعاد.
Zoom
يحدّد مستوى التكبير/التصغير للكاميرا مقياس الخريطة. عند مستويات التكبير/التصغير الأكبر، يمكن رؤية المزيد من التفاصيل على الشاشة، بينما يمكن رؤية المزيد من العالم على الشاشة عند مستويات التكبير/التصغير الأصغر. عند مستوى التكبير/التصغير 0، يكون مقياس الخريطة بحيث يبلغ عرض العالم بأكمله حوالي 256 وحدة بكسل مستقلة الكثافة.
تؤدي زيادة مستوى التكبير/التصغير بمقدار 1 إلى مضاعفة عرض العالم على الشاشة. وبالتالي، عند مستوى التكبير/التصغير N، يبلغ عرض العالم حوالي 256 * 2N وحدة بكسل مستقلة الكثافة. على سبيل المثال، عند مستوى التكبير/التصغير 2، يبلغ عرض العالم بأكمله حوالي 1024 وحدة بكسل مستقلة الكثافة.
ليس من الضروري أن يكون مستوى التكبير/التصغير عددًا صحيحًا. يعتمد نطاق مستويات التكبير/التصغير المسموح بها للخريطة على عدد من العوامل، بما في ذلك الهدف ونوع الخريطة وحجم الشاشة. سيتم تحويل أي رقم خارج النطاق إلى أقرب قيمة صالحة، والتي يمكن أن تكون إما الحد الأدنى لمستوى التكبير/التصغير أو الحد الأقصى لمستوى التكبير/التصغير. تعرض القائمة التالية المستوى التقريبي للتفاصيل التي يمكنك توقّع رؤيتها في كل مستوى تكبير/تصغير:
- 1: العالم
- 5: اليابسة/القارة
- 10: المدينة
- 15: الشوارع
- 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
private lateinit var map: GoogleMap map.setMinZoomPreference(6.0f) map.setMaxZoomPreference(14.0f)
جافا
private GoogleMap map; 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);
يوضّح المخطّط البياني التالي سيناريو يتم فيه حصر هدف الكاميرا بمنطقة أكبر قليلاً من إطار العرض. يمكن للمستخدم التمرير والتحريك، بشرط أن يظل هدف الكاميرا ضمن المنطقة المحدودة. يمثّل التقاطع هدف الكاميرا:
تملأ الخريطة دائمًا إطار العرض، حتى إذا أدى ذلك إلى عرض إطار العرض لمناطق خارج الحدود المحدّدة. على سبيل المثال، إذا وضعت هدف الكاميرا في زاوية المنطقة المحدودة، ستظهر المنطقة ما بعد الزاوية في إطار العرض ولكن لا يمكن للمستخدمين التمرير أكثر في تلك المنطقة. يوضّح الرسم البياني التالي هذا السيناريو. يمثّل التقاطع هدف الكاميرا:
في المخطّط البياني التالي، يحتوي هدف الكاميرا على حدود محدودة جدًا، ما يمنح المستخدم فرصة ضئيلة جدًا للانتقال أو تحريك الخريطة. يمثّل التقاطع هدف الكاميرا:
تحديث شاشة الكاميرا
لتطبيق 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));