باستخدام حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" للتطبيقات المتوافقة مع iOS، يمكنك تغيير وجهة نظر المستخدم للخريطة من خلال تغيير كاميرا الخريطة.
باستخدام حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" للتطبيقات المتوافقة مع iOS، يمكن للمستخدمين إمالة الخرائط وتدويرها لضبطها على اتجاه مفيد لسياقهم. وعند أي مستوى تكبير، يمكن للمستخدمين تحريك الخريطة أو تغيير منظورها بوقت استجابة قصير جدًا.
لا تؤدي التغييرات في الكاميرا إلى تغيير العلامات أو الخطوط المتعدّدة أو الرسومات الأخرى التي أضفتها، على الرغم من أنّك قد ترغب في تغيير هذه الإضافات لتناسب العرض الجديد بشكل أفضل.
طريقة عرض الخريطة
تستخدم حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" للتطبيقات المتوافقة مع iOS إسقاط مركاتور لتمثيل سطح العالم (كرة) على شاشة جهازك (مستوى مسطّح).
موضع الكاميرا
يتم تصميم عرض الخريطة على شكل كاميرا تنظر إلى الأسفل على سطح مستوٍ. يتم تحديد موضع الكاميرا (وبالتالي عرض الخريطة) من خلال السمات التالية: الهدف (الموقع الجغرافي لخط العرض/خط الطول) والاتجاه والإمالة والتكبير/التصغير.
الهدف (الموقع الجغرافي)
هدف الكاميرا هو الموقع الجغرافي لمركز الخريطة، ويتم تحديده كإحداثيات خطوط العرض والطول.
يمكن أن يتراوح خط العرض بين -85 و85 درجة، بما في ذلك هذين الرقمين. سيتم تقريب أي قيم أعلى أو أقل من هذا النطاق إلى أقرب قيمة ضمنه. على سبيل المثال، سيؤدي تحديد خط عرض 100 إلى ضبط القيمة على 85. يتراوح خط الطول بين -180 و180 درجة، شاملة. سيتم تقريب القيم التي تقع خارج هذا النطاق لتصبح ضمن النطاق (-180, 180). على سبيل المثال، سيتم لف 480 و840 و1200 إلى 120 درجة.الاتجاه (التوجيه)
يحدّد اتجاه الكاميرا اتجاه البوصلة، ويتم قياسه بالدرجات من الشمال الحقيقي، بما يتوافق مع الحافة العلوية للخريطة. إذا رسمت خطًا رأسيًا من مركز الخريطة إلى الحافة العلوية للخريطة، يتوافق الاتجاه مع اتجاه الكاميرا (يُقاس بالدرجات) بالنسبة إلى الشمال الحقيقي.
تعني قيمة الاتجاه 0 أنّ أعلى الخريطة يشير إلى الشمال الحقيقي. تعني قيمة الاتجاه 90 أنّ الجزء العلوي من الخريطة يشير إلى الشرق (90 درجة على البوصلة). وتعني القيمة 180 أنّ الجزء العلوي من الخريطة يشير إلى الجنوب.
تتيح لك واجهة برمجة التطبيقات Maps API تغيير اتجاه الخريطة. على سبيل المثال، غالبًا ما يقوم الشخص الذي يقود سيارة بتدوير خريطة الطريق لمحاذاتها مع اتجاه سفره، بينما يقوم المتنزهون الذين يستخدمون الخريطة والبوصلة عادةً بتوجيه الخريطة بحيث يشير الخط العمودي إلى الشمال.
الإمالة (زاوية العرض)
تحدّد الإمالة موضع الكاميرا على قوس فوق موضع مركز الخريطة مباشرةً، ويتم قياسها بالدرجات من النقطة السفلية (الاتجاه الذي يشير مباشرةً إلى أسفل الكاميرا). تشير القيمة 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. في هذه الحالة، يبدأ موضع الكاميرا من الموقع الجغرافي التلقائي ويمكنك
تغييره بعد الإنشاء.
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يتيح لك تغيير الهدف والاتجاه والإمالة والتكبير/التصغير، ويحتوي أيضًا على طرق إضافية ملائمة تتيح التنقّل والتكبير/التصغير المتقدّم وتوسيط الكاميرا ضمن حدود محدّدة مسبقًا والمزيد.
عند تحريك الكاميرا، يمكنك اختيار "تثبيت" الكاميرا في الموضع الجديد، ما يعني عدم وجود حركة، أو تحريك الحركة. على سبيل المثال، إذا أردت تحريك تغيير في الموقع الجغرافي المستهدف للكاميرا، يتم تحريك الكاميرا من الموقع الجغرافي السابق إلى الموقع الجغرافي الجديد.
تتداخل الحركة بين سمات الكاميرا الحالية وسمات الكاميرا الجديدة. يمكنك التحكّم في مدة الحركة باستخدام Core Animation.
استخدام 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];
وضع الحدود
لتحريك الكاميرا بحيث تظهر منطقة اهتمام كاملة بأكبر مستوى تكبير ممكن، اضبط حدودًا لعرض الكاميرا. على سبيل المثال، إذا كنت تريد عرض جميع محطات الوقود ضمن نطاق خمسة أميال من الموقع الجغرافي الحالي للمستخدم، يمكنك تحريك الكاميرا بحيث تظهر جميعها على الشاشة:
- احسب
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 على "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 options = GMSMapViewOptions() options.camera = camera let mapView = GMSMapView(options: options) mapView.setMinZoom(10, maxZoom: 15)
Objective-C
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:41.887 longitude:-87.622 zoom:12]; GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = camera; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; [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 options2 = GMSMapViewOptions() options2.camera = camera2 let mapView2 = GMSMapView(options: options2) // The current zoom, 4, is outside of the range. The zoom will change to 10. mapView2.setMinZoom(10, maxZoom: 15)
Objective-C
// Sets the zoom level to 4. GMSCameraPosition *camera2 = [GMSCameraPosition cameraWithLatitude:41.887 longitude:-87.622 zoom:4]; GMSMapViewOptions *options2 = [[GMSMapViewOptions alloc] init]; options2.camera = camera2; GMSMapView *mapView2 = [[GMSMapView alloc] initWithOptions:options2]; // The current zoom, 4, is outside of the range. The zoom will change to 10. [mapView setMinZoom:10 maxZoom:15];