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

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

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

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

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