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

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

باستخدام حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لنظام التشغيل iOS، يمكنك تغيير وجهة نظر المستخدم للخريطة عن طريق تغيير كاميرا الخريطة.

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

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

عرض الخريطة

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

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

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

رسم بياني لخصائص الكاميرا

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

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

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

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

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

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

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

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

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

ضبط الوضع الأولي للكاميرا

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

لضبط الموضع الأولي للكاميرا، أنشِئ عنصر GMSMapViewOptions واضبط السمة camera على GMSCameraPosition. بعد ذلك، عليك تمرير خياراتك إلى GMSMapView أداة إنشاء المحتوى السهل.

Swift

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 16)
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:16];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

يمكنك أيضًا إنشاء كائن GMSMapView باستخدام الطريقة التلقائية UIView init. في هذه الحالة، يبدأ موضع الكاميرا من الموقع الجغرافي التلقائي ويمكنك تغييره بعد إنشاء الفيديو.

Swift

let options = GMSMapViewOptions()
options.frame = self.view.bounds
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.frame = self.view.bounds;
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

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

يمكنك تغيير موضع الكاميرا آليًا لتعيين الموقع والاتجاه والإمالة والتكبير/التصغير. على الرغم من أنّ السمة GMSMapView توفّر طُرقًا متعدّدة يمكنك استخدامها لتغيير موضع الكاميرا، إلّا أنّك تستخدم عادةً GMSCameraPosition أو GMSCameraUpdate:

  • GMSCameraPosition يحتوي على خصائص وطرق تستخدمها لتغيير كل معلمة موضع الكاميرا: الهدف، والحمل، والإمالة، والتكبير/التصغير.

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

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

وتتداخل الصورة المتحركة بين سمات الكاميرا الحالية وسمات الكاميرا الجديدة. يمكنك التحكم في مدة الصورة المتحركة باستخدام الرسوم المتحركة الأساسية.

استخدام GMSCameraPosition

لتغيير الكاميرا باستخدام GMSCameraPosition، يمكنك إنشاء كائن جديد أو نسخ كائن حالي ثم ضبطه على الكائن GMSMapView. يمكنك استخدام الكائن GMSCameraPosition لنقل الكاميرا إلى الموقع الجديد مع رسوم متحركة أو بدونها.

يمكنك استخدام كائن GMSCameraPosition لضبط أي خصائص للكاميرا مثل خط العرض وخط الطول والتكبير/التصغير والاتجاه وزاوية العرض. يمكنك بعد ذلك استخدام هذا الكائن لضبط السمة camera على GMSMapView.

Swift

let fancy = GMSCameraPosition(
  latitude: -33,
  longitude: 151,
  zoom: 6,
  bearing: 270,
  viewingAngle: 45
)
mapView.camera = fancy
      

Objective-C

GMSCameraPosition *fancy = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                       longitude:151.2086
                                                            zoom:6
                                                         bearing:30
                                                    viewingAngle:45];
[mapView setCamera:fancy];
      

احذف أي سمة GMSCameraPosition تريد ضبطها على قيمتها التلقائية.

لتحريك عملية النقل، استخدِم الإجراء animateToCameraPosition: بدلاً من ضبط السمة camera.

استخدام GMSCameraUpdate

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

على سبيل المثال، لاستخدام GMSCameraPosition لزيادة مستوى التكبير أو التصغير الحالي، يجب أولاً تحديد مستوى التكبير/التصغير الحالي، ثم إنشاء عنصر GMSCameraPosition حيث يتم ضبط مستوى التكبير/التصغير على قيمة أكبر من مستوى التكبير/التصغير الحالي.

يمكنك بدلاً من ذلك إنشاء كائن GMSCameraUpdate باستخدام الطريقة zoomIn:. بعد ذلك، عدِّل الكاميرا من خلال تمرير الكائن GMSCameraUpdate إلى طريقة animateWithCameraUpdate:GMSMapView.

Swift

// Zoom in one zoom level
let zoomCamera = GMSCameraUpdate.zoomIn()
mapView.animate(with: zoomCamera)
      

Objective-C

// Zoom in one zoom level
GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn];
[mapView animateWithCameraUpdate:zoomCamera];
      

استخدِم طريقة GMSMapView moveCamera: لتثبيت الكاميرا بالوضع الجديد بدلاً من ذلك.

في المثال التالي، يمكنك استخدام GMSCameraUpdate لتحريك الكاميرا لجعلها في وسط فانكوفر.

Swift

// Center the camera on Vancouver, Canada
let vancouver = CLLocationCoordinate2D(latitude: 49.26, longitude: -123.11)
let vancouverCam = GMSCameraUpdate.setTarget(vancouver)
mapView.animate(with: vancouverCam)
      

Objective-C

// Center the camera on Vancouver, Canada
CLLocationCoordinate2D vancouver = CLLocationCoordinate2DMake(49.26, -123.11);
GMSCameraUpdate *vancouverCam = [GMSCameraUpdate setTarget:vancouver];
[mapView animateWithCameraUpdate:vancouverCam];
      

إنشاء كائن GMSCameraUpdate

يمكنك إنشاء كائن GMSCameraUpdate باستخدام إحدى طرقه.

zoomIn: وzoomOut:
يمكنك تغيير مستوى التكبير/التصغير الحالي بمقدار 1.0، مع إبقاء جميع الخصائص الأخرى كما هي.
zoomTo:
يؤدي هذا الإجراء إلى تغيير مستوى التكبير/التصغير إلى القيمة المحدّدة، مع الإبقاء على جميع السمات الأخرى.
zoomBy:
يزيد (أو ينخفض، إذا كانت القيمة سالبة) مستوى التكبير/التصغير بالقيمة المحددة.
zoomBy:atPoint:
يزيد (أو ينخفض، إذا كانت القيمة سالبة) مستوى التكبير/التصغير بمقدار القيمة المحددة، مع الاحتفاظ بموضع النقطة المحددة على الشاشة.
setTarget:
يغيّر هذا الإعداد خط العرض وخط الطول للكاميرا مع الحفاظ على كل الخصائص الأخرى.
setTarget:zoom:
يغيّر هذا الإعداد خط العرض وخط الطول والتكبير/التصغير للكاميرا مع الاحتفاظ بكل الخصائص الأخرى.
setCamera:
لتعيين GMSCameraPosition جديد.
scrollByX:Y:
يؤدي هذا الخيار إلى تغيير خط العرض وخط الطول للكاميرا لتحريك الخريطة حسب عدد النقاط المحدّد. تؤدي القيمة x الموجبة إلى تحرّك الكاميرا جهة اليمين، بحيث تبدو الخريطة قد تحركت إلى اليسار. تؤدي قيمة ص الموجبة إلى تحرك الكاميرا للأسفل بحيث تظهر الخريطة وقد تم تحريكها للأعلى. إنّ التمرير مرتبط باتجاه الكاميرا الحالي. على سبيل المثال، إذا كان اتجاه الكاميرا نحو 90 درجة، يكون اتجاه الشرق "لأعلى".
fitBounds:
تحوِّل هذه الميزة الكاميرا إلى توسيط الحدود المحددة على الشاشة في أعلى مستوى تكبير ممكن. يتم تطبيق مساحة متروكة تلقائية على حدود 64 نقطة.
fitBounds:withPadding:
تحوِّل هذه الميزة الكاميرا إلى توسيط الحدود المحددة على الشاشة بأعلى مستوى ممكن من التكبير. استخدِم هذه الطريقة لتحديد المساحة المتروكة نفسها بالنقاط لجميع جوانب مربع الإحاطة.
fitBounds:withEdgeInsets:
تحوِّل هذه الميزة الكاميرا إلى توسيط الحدود المحددة على الشاشة بأعلى مستوى ممكن من التكبير. باستخدام UIEdgeInsets، يمكنك تحديد مساحة متروكة لكل جانب من مربّع الإحاطة بشكل مستقل.

استخدام GMSMapView لتغيير سمة واحدة

يوفّر GMSMapView طُرقًا متعدّدة تتيح لك تحريك الكاميرا بدون استخدام عنصر GMSCameraPosition أو عنصر GMSCameraUpdate. باستخدام هاتَين الطريقتَين، مثل animateToLocation: أو animateToZoom:، يمكنك تحريك تغيير إلى خاصية كاميرا واحدة.

على سبيل المثال، استخدِم الطريقة toViewingAngle: لإضافة مؤثرات حركية إلى تغيير على إمالة الكاميرا.

Swift

mapView.animate(toViewingAngle: 45)
      

Objective-C

[mapView animateToViewingAngle:45];
      

ضبط الاستهداف (الموقع الجغرافي)

يحدد الموقع مركز الخريطة. يتم تحديد المواقع الجغرافية من خلال خط العرض وخط الطول، ويتم تمثيلها آليًا بواسطة CLLocationCoordinate2D، الذي تم إنشاؤه باستخدام CLLocationCoordinate2DMake.

استخدِم GMSCameraPosition لتغيير الموقع الجغرافي. في هذا المثال، تنطبق الخريطة على الموقع الجديد.

Swift

let target = CLLocationCoordinate2D(latitude: -33.868, longitude: 151.208)
mapView.camera = GMSCameraPosition(target: target, zoom: 6)
      

Objective-C

CLLocationCoordinate2D target =
    CLLocationCoordinate2DMake(-33.868, 151.208);
mapView.camera = [GMSCameraPosition cameraWithTarget:target zoom:6];
      

لتحريك التغيير وتحريك الخريطة إلى الموقع الجديد، يمكنك استخدام طريقة animateToCameraPosition: بدلاً من ضبط السمة camera. أو استخدِم الطريقة animateToLocation: على GMSMapView.

Swift

mapView.animate(toLocation: CLLocationCoordinate2D(latitude: -33.868, longitude: 151.208))
      

Objective-C

[mapView animateToLocation:CLLocationCoordinate2DMake(-33.868, 151.208)];
      

يمكنك أيضًا إنشاء عنصر GMSCameraUpdate لتحريك الكاميرا. استخدِم الطريقة المضمَّنة، وهي scrollByX:Y:، لتحديد عدد النقاط المطلوب تمريرها في الكاميرا في الاتجاهين X وY. في هذا المثال، تمرر الكاميرا 200 نقطة إلى اليمين و100 نقطة لأسفل:

Swift

// Move the camera 200 points to the right, and 100 points downwards
let downwards = GMSCameraUpdate.scrollBy(x: 200, y: 100)
mapView.animate(with: downwards)
      

Objective-C

// Move the camera 200 points to the right, and 100 points downwards
GMSCameraUpdate *downwards = [GMSCameraUpdate scrollByX:200.0 Y:100.0];
[mapView animateWithCameraUpdate:downwards];
      

تعيين الاتجاه (الاتجاه)

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

يمكنك ضبط الاتجاه آليًا باستخدام GMSCameraPosition أو GMSCameraUpdate أو باستخدام طريقة animateToBearing: في GMSMapView.

Swift

mapView.animate(toBearing: 0)
      

Objective-C

[mapView animateToBearing:0];
      

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

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

يمكن أن تتراوح زاوية العرض بين 0 (تشير مباشرة إلى أسفل الخريطة)، وما يصل إلى الحد الأقصى التابع على مستوى التكبير/التصغير. بالنسبة لمستوى التكبير/التصغير 16 أو أعلى، فإن الحد الأقصى للزاوية هو 65 درجة. بالنسبة لمستوى التكبير/التصغير 10 أو أقل، يبلغ الحد الأقصى للزاوية 30 درجة.

يمكنك ضبط زاوية العرض آليًا باستخدام GMSCameraPosition أو GMSCameraUpdate أو من خلال طريقة animateToViewingAngle: المسماة GMSMapView.

Swift

mapView.animate(toViewingAngle: 45)
      

Objective-C

[mapView animateToViewingAngle:45];
      

ضبط مستوى التكبير/التصغير

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

يمكنك ضبط التكبير أو التصغير آليًا باستخدام GMSCameraPosition أو GMSCameraUpdate أو باستخدام طريقة animateToZoom: المسماة GMSMapView.

Swift

mapView.animate(toZoom: 12)
      

Objective-C

[mapView animateToZoom:12];
      

يستخدم المثال التالي الطريقة zoomIn: لإنشاء كائن GMSCameraUpdate لتحريك عملية تكبير بمستوى واحد من المستوى الحالي.

Swift

// Zoom in one zoom level
let zoomCamera = GMSCameraUpdate.zoomIn()
mapView.animate(with: zoomCamera)
      

Objective-C

// Zoom in one zoom level
GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn];
[mapView animateWithCameraUpdate:zoomCamera];
      

وضع الحدود

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

  1. احسب GMSCoordinateBounds التي تريد أن تكون مرئية على الشاشة.
  2. استخدِم الطريقة cameraForBounds:insets: في GMSMapView لعرض قيمة GMSCameraPosition جديدة.

يضمن ضبط هذه الحدود ملاءمة GMSCoordinateBounds المحددة لحجم الخريطة الحالية بالكامل. لاحظ أن هذه الطريقة تحدد إمالة واتجاه الخريطة على 0.

يوضح المثال التالي كيفية تغيير الكاميرا بحيث تظهر مدينتا فانكوفر وكالغاري في نفس العرض.

Swift

let vancouver = CLLocationCoordinate2D(latitude: 49.26, longitude: -123.11)
let calgary = CLLocationCoordinate2D(latitude: 51.05,longitude: -114.05)
let bounds = GMSCoordinateBounds(coordinate: vancouver, coordinate: calgary)
let camera = mapView.camera(for: bounds, insets: UIEdgeInsets())!
mapView.camera = camera
      

Objective-C

CLLocationCoordinate2D vancouver = CLLocationCoordinate2DMake(49.26, -123.11);
CLLocationCoordinate2D calgary = CLLocationCoordinate2DMake(51.05, -114.05);
GMSCoordinateBounds *bounds =
    [[GMSCoordinateBounds alloc] initWithCoordinate:vancouver coordinate:calgary];
GMSCameraPosition *camera = [mapView cameraForBounds:bounds insets:UIEdgeInsetsZero];
mapView.camera = camera;
      

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

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

على سبيل المثال، قد يرغب تطبيق بيع بالتجزئة لمركز تسوق أو مطار في تقييد الخريطة إلى حدود معينة، مما يسمح للمستخدمين بالتمرير والتحريك داخل تلك الحدود.

لحصر التحريك على حدود معيّنة، اضبط السمة cameraTargetBounds لـ GMSMapView على عنصر GMSCoordinateBounds يحدّد الحدود المطلوبة. لإزالة القيد لاحقًا، اضبط السمة cameraTargetBounds على صفر.

Swift

mapView.cameraTargetBounds = bounds
      

Objective-C

mapView.cameraTargetBounds = bounds;
      

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

رسم بياني يعرض حدود الكاميرا الأكبر من إطار العرض

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

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

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

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

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

تحدد الثوابت العامة kGMSMinZoomLevel وkGMSMaxZoomLevel قيم الحد الأدنى أو الأقصى للتكبير/التصغير. وفقًا للإعدادات التلقائية، يتم ضبط الخاصيتين minZoom وmaxZoom في GMSMapView على هذه الثوابت.

لتقييد نطاق مستويات التكبير/التصغير المتاحة للخريطة، اضبط الحد الأدنى والأقصى لمستوى التكبير/التصغير. يقصر الرمز التالي مستوى التكبير/التصغير على ما بين 10 و15.

Swift

let camera = GMSCameraPosition(
  latitude: 41.887,
  longitude: -87.622,
  zoom: 12
)
let mapView = GMSMapView(frame: .zero, camera: camera)
mapView.setMinZoom(10, maxZoom: 15)
      

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:41.887
                                                       longitude:-87.622
                                                             zoom:12];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero
                                        camera:camera];
[mapView setMinZoom:10 maxZoom:15];
      

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

Swift

mapView.setMinZoom(12, maxZoom: mapView.maxZoom)
      

Objective-C

[mapView setMinZoom:12 maxZoom:mapView.maxZoom];
      

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

Swift

// Sets the zoom level to 4.
let camera2 = GMSCameraPosition(
  latitude: 41.887,
  longitude: -87.622,
  zoom: 4
)
let mapView2 = GMSMapView(frame: .zero, camera: camera)

// The current zoom, 4, is outside of the range. The zoom will change to 10.
mapView.setMinZoom(10, maxZoom: 15)
      

Objective-C

// Sets the zoom level to 4.
GMSCameraPosition *camera2 = [GMSCameraPosition cameraWithLatitude:41.887
                                                         longitude:-87.622
                                                              zoom:4];
GMSMapView *mapView2 = [GMSMapView mapWithFrame:CGRectZero
                                         camera:camera];
// The current zoom, 4, is outside of the range. The zoom will change to 10.
[mapView setMinZoom:10 maxZoom:15];