باستخدام حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط 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
باستخدام طريقة البدء 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
إلى
طريقة 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];
استخدِم طريقة 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:
، لتحديد عدد النقاط التي يجب تمريرها إلى الكاميرا في الاتجاهين "س" و"ص". في هذا المثال، تقوم بتمرير الكاميرا 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 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];