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

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

باستخدام حزمة تطوير البرامج (SDK) لتطبيق "خرائط 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 درجة. يُرجى ملاحظة أنّ الكاميراMOVED تتحرك في منتصف قوس بين الاتجاه العلوي المباشر (0 درجة) والأرض (90 درجة)،MOVED إلى الموضع 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 تغيير الاستهداف والاتجاه والميل والتكبير/التصغير، كما تتضمّن أيضًا 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];