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

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

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

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

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

عرض الخريطة

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

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

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

مخطّط الكاميرا البياني

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

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

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

الاتجاه

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

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

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

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

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

في الصور أدناه، تكون زاوية العرض 0 درجة. تعرض الصورة الأولى تخطيطًا توضيحيًا لذلك، حيث يشير الموضع 1 إلى موضع الكاميرا، والموضع 2 هو موضع الخريطة الحالي. تظهر الخريطة الناتجة تحتها.

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

في الصور أدناه، تكون زاوية العرض 45 درجة. لاحظ أنّ الكاميرا تتحرّك إلى منتصف قوس بين الوضع العلوي المباشر (0 درجة) والأرض (90 درجة)، لتصل إلى الوضع 3. لا تزال الكاميرا مصوّبة نحو نقطة مركز الخريطة، ولكن أصبحت المنطقة الممثّلة بالخط في الموضع 4 مرئية الآن.

لقطة شاشة لخريطة تم ضبط الكاميرا فيها على زاوية رؤية 45 درجة، وبمستوى تكبير 18
يتم عرض الخريطة بزاوية عرض 45 درجة.
مخطّط بياني يعرض زاوية عرض الكاميرا مضبوطة على 45 درجة، مع استمرار ضبط مستوى التكبير على 18
زاوية عرض الكاميرا 45 درجة

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

Zoom

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

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

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

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

استخدام 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 درجة، عندها يكون الشرق "أعلى".
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 على القيمة 0.

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