باستخدام حزمة تطوير البرامج (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 هو موضع الخريطة الحالي. تظهر الخريطة الناتجة تحتها.
في الصور أدناه، تكون زاوية العرض 45 درجة. يُرجى ملاحظة أنّ الكاميراMOVED تتحرك في منتصف قوس بين الاتجاه العلوي المباشر (0 درجة) والأرض (90 درجة)،MOVED إلى الموضع 3. لا تزال الكاميرا مصوّبة نحو نقطة مركز الخريطة، ولكن أصبحت المنطقة الممثّلة بالخط في الموضع 4 مرئية الآن.
لا تزال الخريطة في لقطة الشاشة هذه مركّزة على النقطة نفسها كما في الخرائط الأصلية، ولكن ظهرت المزيد من العناصر في أعلى الخريطة. عند زيادة الزاوية إلى أكثر من 45 درجة، تظهر العناصر بين الكاميرا وموضع التضاريس على التضاريس أكبر بشكلٍ نسبي، بينما تظهر العناصر التي تتجاوز موضع التضاريس أصغر بشكلٍ نسبي، ما ينتج عنه تأثير ثلاثي الأبعاد.
Zoom
يحدِّد مستوى تكبير الكاميرا مقياس الخريطة. عند استخدام مستويات التكبير الأكبر، يمكن رؤية المزيد من التفاصيل على الشاشة، بينما عند استخدام مستويات التكبير الأصغر، يمكن رؤية المزيد من العالم على الشاشة. في مستوى التكبير 0، يكون مقياس الخريطة بحيث يكون عرض العالم كله حوالي 256 نقطة.
يؤدي رفع مستوى التكبير بمقدار درجة واحدة إلى مضاعفة عرض الكرة الأرضية على الشاشة. وبالتالي، عند مستوى التكبير 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
تغيير الاستهداف والاتجاه والميل والتكبير/التصغير، كما تتضمّن أيضًا 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];
وضع الحدود
لنقل الكاميرا بحيث تظهر منطقة الاهتمام بالكامل عند أقصى مستوى تكبير ممكن، حدِّد حدودًا لعرض الكاميرا. على سبيل المثال، إذا أردت عرض جميع محطات الوقود ضمن خمسة أميال من موقع المستخدم الحالي، حرِّك الكاميرا لكي تظهر جميعها على الشاشة:
- احتسِب
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
على القيمة 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];