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

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

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

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

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

عرض الخريطة

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

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

يتم تصميم عرض الخريطة على شكل كاميرا تنظر للأسفل على مستوٍ مستوٍ. يتم تحديد موضع الكاميرا (وبالتالي عرض الخريطة) من خلال السمات التالية: 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
خريطة في مستوى التكبير/التصغير 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 باستخدام طريقة init التلقائية UIView. في هذه الحالة، يبدأ موضع الكاميرا من الموقع التلقائي ويمكنك تغييره بعد الإنشاء.

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 إلى طريقة GMSMapView animateWithCameraUpdate:.

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

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

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