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

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

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

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

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

عرض الخريطة

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

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

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

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

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

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

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

توسيع

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

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

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

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

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

ويتم تمثيل موضع الكاميرا على شكل كائن.GMSCameraPosition يمكنك إنشاء كائن GMSCameraPosition لضبط خط العرض وخط الطول للهدف، بالإضافة إلى ضبط الاتجاه والإمالة والتكبير/التصغير.

لضبط موضع الكاميرا الأوليّ، يمكنك إنشاء كائن GMSCameraPosition ثم تمرير هذا العنصر إلى GMSMapView الدالة الملائمة.

Swift

let camera = GMSCameraPosition(
  latitude: -33.8683,
  longitude: 151.2086,
  zoom: 16
)
mapView = GMSMapView(frame: self.view.bounds, camera: camera)
      

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:16];
mapView = [GMSMapView mapWithFrame:self.view.bounds camera:camera];
      

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

Swift

mapView = GMSMapView(frame: self.view.bounds)
      

Objective-C

mapView = [[GMSMapView alloc] initWithFrame:self.view.bounds];
      

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

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

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

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

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

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

استخدام 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];
      

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

ضبط الحدود

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

احسب أولاً GMSCoordinateBounds الذي تريد أن تكون مرئيًا على الشاشة. بعد ذلك، استخدِم الطريقة 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];