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

الهدف (الموقع الجغرافي)
هدف الكاميرا هو موقع مركز الخريطة، المحدد كإحداثيات خطوط الطول والعرض.
يمكن أن يتراوح خط العرض بين -85 و85 درجة، بشكل شامل. سيتم تثبيت القيم التي تزيد عن هذا النطاق أو أسفله إلى أقرب قيمة ضمن هذا النطاق. على سبيل المثال، سيؤدي تحديد خط عرض 100 إلى ضبط القيمة على 85. يتراوح خط الطول بين -180 و180 درجة، شاملة. سيتم التفاف القيم التي تزيد عن هذا النطاق أو أسفله بحيث تقع ضمن النطاق (-180، 180). على سبيل المثال، سيتم التفاف 480 و840 و1200 جميعها إلى 120 درجة.الاتجاه (الاتجاه)
يحدّد اتجاه الكاميرا اتجاه البوصلة، والذي يتم قياسه بالدرجات من الشمال الحقيقي، بما يقابل الحافة العلوية من الخريطة. إذا رسمت خطًا رأسيًا من مركز الخريطة إلى الحافة العلوية من الخريطة، فسيتوافق المحمل مع عنوان الكاميرا (مقاس بالدرجات) بالنسبة إلى الشمال الحقيقي.
ويعني الانحراف بقيمة 0 أن أعلى الخريطة تشير إلى الشمال الحقيقي. وتعني قيمة الانحراف 90 أعلى نقاط الخريطة باتجاه الشرق (90 درجة على البوصلة). القيمة 180 تعني أعلى نقاط الخريطة المتجهة إلى الجنوب.
تتيح لك واجهة برمجة التطبيقات للخرائط تغيير اتجاه الخريطة. على سبيل المثال، غالبًا ما يقوم شخص ما يقود سيارة بتحويل خارطة الطريق لمحاذاتها مع اتجاه سفره، بينما عادةً ما يوجّه المتجولون الذين يستخدمون الخريطة والبوصلة الخريطة بحيث يشير الخط الرأسي إلى الشمال.
الإمالة (زاوية العرض)
تحدّد الإمالة وضع الكاميرا على قوس فوق موضع وسط الخريطة مباشرةً، حيث يتم قياسها بالدرجات من النظير (الاتجاه الذي يشير إلى أسفل الكاميرا مباشرةً). تتجاوب القيمة 0 مع كاميرا موجهة نحو الأسفل. تتوافق القيم الأكبر من 0 مع كاميرا مائلّة باتجاه الأفق بمقدار عدد الدرجات المحدّد. عند تغيير زاوية العرض، تظهر الخريطة في المنظور، مع ظهور العناصر البعيدة أصغر حجمًا، والعناصر القريبة تظهر أكبر. توضح الرسوم التوضيحية التالية ذلك.
في الصور أدناه، تبلغ زاوية العرض 0 درجة. تعرض الصورة الأولى مخططًا لذلك، حيث يشير الموضع 1 إلى موضع الكاميرا، والموضع 2 هو موضع الخريطة الحالي. تظهر الخريطة الناتجة تحتها.
![]() |
![]() |
في الصور أدناه، تبلغ زاوية العرض 45 درجة. لاحظ أن الكاميرا تتحرك في المنتصف على طول قوس بين الرأس المستقيم (0 درجة) والأرض (90 درجة)، في الموضع 3. لا تزال الكاميرا تشير إلى النقطة المركزية للخريطة، ولكن يمكن الآن رؤية المنطقة التي يمثّلها الخط في الموضع 4.
![]() |
![]() |
لا تزال الخريطة في لقطة الشاشة هذه متمركزة على النقطة نفسها كما في الخريطة الأصلية، ولكن ظهرت ميزات أخرى في الجزء العلوي من الخريطة. كلما زادت الزاوية التي تزيد عن 45 درجة، تظهر العناصر الموجودة بين الكاميرا وموضع الخريطة أكبر نسبيًا، في حين تظهر العناصر التي تكون خارج موضع الخريطة أصغر نسبيًا، ما ينتج عنه تأثير ثلاثي الأبعاد.
Zoom
يحدد مستوى تكبير/تصغير الكاميرا مقياس الخريطة. في مستويات التكبير/التصغير الأكبر، يمكن رؤية مزيد من التفاصيل على الشاشة، بينما عند مستويات تكبير أصغر، يمكن رؤية المزيد من العالم على الشاشة. في مستوى التكبير/التصغير 0، يكون مقياس الخريطة بحيث يبلغ عرض العالم بأكمله حوالي 256 نقطة.
تؤدي زيادة مستوى التكبير/التصغير بمقدار 1 إلى مضاعفة عرض العالم على الشاشة. وبالتالي، عند مستوى التكبير/التصغير N، يبلغ عرض العالم حوالي 256 * 2N نقطة. على سبيل المثال، عند مستوى التكبير/التصغير 2، يبلغ عرض العالم بأسره 1024 نقطة تقريبًا.
لا يلزم أن يكون مستوى التكبير/التصغير عددًا صحيحًا. يعتمد نطاق مستويات التكبير/التصغير التي تسمح بها الخريطة على عدد من العوامل بما في ذلك الهدف ونوع الخريطة وحجم الشاشة. سيتم تحويل أي رقم خارج النطاق إلى أقرب قيمة صالحة تالية، والتي يمكن أن تكون الحد الأدنى لمستوى التكبير أو التصغير. توضح القائمة التالية المستوى التقريبي للتفاصيل التي يمكنك توقع رؤيتها في كل مستوى من مستويات التكبير/التصغير:
- 1: العالم
- 5: اليابسة/القارة
- 10: المدينة
- 15: الشوارع
- 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
يتيح لك تغيير الاستهداف، والاتجاه، والإمالة، والتكبير/التصغير، ويحتوي أيضًا على طرق إضافية للراحة لدعم التمرير، والتكبير/التصغير المتقدم، وتوسيط الكاميرا بين حدود محدّدة مسبقًا، والمزيد.
عند تحريك الكاميرا، يمكنك اختيار "التقاط" الكاميرا للانتقال إلى الموضع الجديد، مما يعني عدم وجود رسوم متحركة، أو تحريك الكاميرا للحركة. على سبيل المثال، إذا قمت بتحريك تغيير على الموقع المستهدف للكاميرا، تتحرك الصورة المتحركة من الموقع السابق إلى الموقع الجديد.
وتتداخل الصورة المتحركة بين سمات الكاميرا الحالية وسمات الكاميرا الجديدة. يمكنك التحكم في مدة الصورة المتحركة باستخدام الرسوم المتحركة الأساسية.
استخدام 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];
استخدِم طريقة 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 الموجبة إلى تحرّك الكاميرا جهة اليمين، بحيث تبدو الخريطة قد تحركت إلى اليسار. تؤدي قيمة ص الموجبة إلى تحرك الكاميرا للأسفل بحيث تظهر الخريطة وقد تم تحريكها للأعلى. إنّ التمرير مرتبط باتجاه الكاميرا الحالي. على سبيل المثال، إذا كان اتجاه الكاميرا نحو 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];
وضع الحدود
لتحريك الكاميرا بحيث تظهر منطقة الاهتمام بالكامل وبأعلى مستوى تكبير ممكن، يجب وضع حدود لإطار عرض الكاميرا. على سبيل المثال، إذا كنت تريد عرض جميع محطات الوقود في نطاق خمسة أميال من وضع المستخدم الحالي، فحرك الكاميرا بحيث تكون جميعها مرئية على الشاشة:
- احسب
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];