باستخدام حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط 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 هو موضع الخريطة الحالي. يتم عرض الخريطة الناتجة تحته.
![]() |
![]() |
في الصور أدناه، تبلغ زاوية العرض 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
باستخدام طريقة init التلقائية 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
إلى طريقة
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];
استخدِم طريقة 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 الموجبة إلى تحرك الكاميرا إلى اليمين، بحيث تبدو الخريطة قد تم تحريكها إلى اليسار. تؤدي قيمة 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];
ضبط الحدود
لتحريك الكاميرا بحيث تكون منطقة الاهتمام بالكامل مرئية بأفضل مستوى ممكن من التكبير، عليك ضبط حدود لعرض الكاميرا. على سبيل المثال، إذا كنت ترغب في عرض جميع محطات الوقود على بُعد خمسة أميال من الموضع الحالي للمستخدم، فحرك الكاميرا بحيث تكون جميعها مرئية على الشاشة:
- احسب قيمة
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];