تتيح لك ميزة التجوّل الافتراضي في خرائط Google استكشاف الأماكن حول العالم من خلال صور على مستوى الشارع بزاوية تبلغ 360 درجة. يمكنك استكشاف معالم العالم، أو عرض الأشخاص الطبيعيين، أو التنقل في رحلة، أو عرض الخارج من نشاطك التجاري.
نظرة عامة
يوفر التجوّل الافتراضي من Google إطلالات بانورامية بزاوية 360 درجة من الطرق المحددة عبر منطقة التغطية. التغطية المتوفرة من خلال حزمة تطوير البرامج (SDK) هي نفس
التغطية لتطبيق "خرائط Google" لنظام التشغيل iOS أو
https://maps.google.com/
. يمكنك قراءة المزيد حول
التجوّل الافتراضي ورؤية المناطق المتاحة على خريطة تفاعلية، في
حول التجوّل الافتراضي.
توفر حزمة SDK للخرائط لنظام التشغيل iOS خدمة التجوّل الافتراضي للحصول على الصور المستخدمة في التجوّل الافتراضي في خرائط Google ومعالجتها.
يتم عرض صور التجوّل الافتراضي على شكل صور بانورامية ويتم عرضها من داخل عارض التجوّل الافتراضي، وهو كائن من النوع GMSPanoramaView
.
الصور البانورامية للتجوّل الافتراضي
كل بانوراما للتجوّل الافتراضي هي صورة، أو مجموعة من الصور، والتي تقدم عرضًا كاملاً بزاوية 360 درجة من موقع واحد. تتوافق الصور مع إسقاط الإسقاط المتساوي المستطيلات (Plate Carrée)، والذي يتضمن عرضًا أفقيًا بزاوية 360 درجة (ملفوف بالكامل) و180 درجة من العرض الرأسي (من مستقيم إلى أسفل مباشرة). تحدد بانوراما 360 درجة الناتجة الإسقاط على كرة مع التفاف الصورة إلى السطح ثنائي الأبعاد لهذه الكرة.
يمكن مشاهدة صور "التجوّل الافتراضي" باستخدام الكائن GMSPanoramaView
. يوفر هذا الكائن عارضًا يعرض البانوراما على شكل بانوراما 360 درجة، مع وضع كاميرا في المنتصف. يمكنك التحكم في اتجاه الكاميرا آليًا، بالإضافة إلى عدة خصائص تخصّص العارض.
الوصول إلى بيانات التجوّل الافتراضي
يتم التعرف على الصور البانورامية للتجوّل الافتراضي بواسطة أحد نوعين من البيانات الوصفية:
panoramaID
- رقم التعريف الفريد لصورة بانوراما في "التجوّل الافتراضي". يمكن أن يتغيّر هذا
panoramaID
بمرور الوقت، ولن يكون مناسبًا كمرجع طويل الأمد أو غير ثابت. من الأفضل استخدامpanoramaID
لتوفير وصول آلي إلى صور "التجوّل الافتراضي" المختلفة. coordinate
- الموقع الدقيق لهذه الصورة، معبرًا عنه باسم
CLLocationCoordinate2D
. ويمكنك استخدامcoordinate
للتخزين الدائم لموقع الصورة البانورامية، أو لترجمة إجراءات المستخدم على الخريطة إلى صورة في ميزة "التجوّل الافتراضي".
يتم تخزين كل من panoramaID
وcoordinate
كخصائص لكائن GMSPanorama
. يمكنك طلب GMSPanorama
من
GMSPanoramaService
باستخدام coordinate
أو panoramaID
. وسيتضمن الكائن الناتج أجزاء البيانات الوصفية بالإضافة إلى مجموعة من الروابط إلى الصور البانورامية القريبة.
تعيين موقع الصورة البانورامية
يمكن تعيين موقع بانوراما التجوّل ثلاثي الأبعاد بناءً على الإحداثي.
تطلب الطريقة
moveNearCoordinate
صورة بانورامية بالقرب من الإحداثي.تُعد طريقة
moveNearCoordinate:radius
متشابهة، ولكنها تسمح لك بتحديد نطاق البحث بالأمتار حول الإحداثي.تسمح لك طريقة
moveNearCoordinate:source
بتحديد مصدر. ويكون المصدر مفيدًا إذا كنت ترغب في تقييد التجوّل الافتراضي للبحث فقط عن الصور البانورامية الخارجية. افتراضيًا، تكون الصور البانورامية للمواقع إما داخل أو خارج. لاحظ أن الصور البانورامية الخارجية قد لا تكون موجودة للموقع المحدد.تتيح لك طريقة
moveNearCoordinate:radius:source
تحديد كل من النطاق الجغرافي والمصدر.
عرض صور التجوّل الافتراضي
إضافة عارض التجوّل الافتراضي
الخطوات الأساسية لإضافة مُشاهد هي:
- (مرة واحدة) اتّبِع الخطوات الواردة في البدء للحصول على حزمة تطوير البرامج (SDK)، والحصول على مفتاح وإضافة أُطر العمل المطلوبة.
- إنشاء
ViewController
أو تحديثه. في حالة عرض البانوراما عندما تصبح وحدة تحكم طريقة العرض هذه مرئية، تأكد من إنشائها ضمن طريقةloadView
. - يمكنك إنشاء فئة
GMSPanoramaView
وإنشاء مثيل لها باستخدام طريقةGMSPanoramaView
initWithFrame:
. إذا كان هذا هو العرض الوحيد لوحدة التحكم في العرض، يمكن استخدامCGRectZero
كإطار للخريطة - سيتم تغيير حجم الخريطة تلقائيًا. - يمكنك ضبط الكائن
GMSPanoramaView
كعرض وحدة التحكُّم في العرض، مثلself.view = panoView;
. - يمكنك ضبط موقع صورة "التجوّل الافتراضي" باستخدام طريقة مثل
moveNearCoordinate:
.
يؤدي المثال التالي إلى إضافة عارض لميزة "التجوّل الافتراضي" إلى أحد التطبيقات.
Swift
import GoogleMaps class StreetView: UIViewController { override func loadView() { let panoView = GMSPanoramaView(frame: .zero) self.view = panoView panoView.moveNearCoordinate(CLLocationCoordinate2D(latitude: -33.732, longitude: 150.312)) } }
Objective-C
#import "StreetView.h" @import GoogleMaps; @interface StreetView () @end @implementation StreetView - (void)loadView { GMSPanoramaView *panoView = [[GMSPanoramaView alloc] initWithFrame:CGRectZero]; self.view = panoView; [panoView moveNearCoordinate:CLLocationCoordinate2DMake(-33.732, 150.312)]; } @end
تخصيص العارض
يمكنك تخصيص العارض عبر تحديد الإيماءات المتوفرة. بشكل افتراضي، يتم تمكين العرض الشامل والتكبير والتصغير والتنقل إلى صور البانوراما المجاورة.
يتم التحكّم في الإيماءات الفردية من خلال خصائص GMSPanoramaView
.
تعمل هذه الخصائص على تفعيل الإيماءات التي يتحكم فيها المستخدم أو إيقافها، وتظل التغييرات الآلية ممكنة عند إيقاف الإيماءة.
orientationGestures
- ما إذا كان بإمكان المستخدم إعادة توجيه الكاميرا بالنقر أو
السحب. يمكنك ضبط هذه السياسة على
NO
لإيقاف تغييرات الاتجاه في الكاميرا. zoomGestures
- ما إذا كان المستخدم سيتمكن من التصغير أو التكبير بإصبعين للتكبير أو التصغير. يمكنك ضبط هذه السياسة على
NO
لإيقاف التكبير أو التصغير. navigationGestures
- ما إذا كان المستخدم سيتمكن من تغيير البانوراما المرئية أم لا. يمكن للمستخدمين استخدام نقرة واحدة على روابط التنقل أو النقر مرّتين على طريقة العرض لتغيير الصور البانورامية التي تم ضبطها على
NO
لإيقاف تغييرات التنقل.
يمكنك تفعيل كل الإيماءات أو إيقافها دفعة واحدة باستخدام طريقة setAllGesturesEnabled:
.
Swift
panoView.setAllGesturesEnabled(false)
Objective-C
[panoView setAllGesturesEnabled:NO];
إطلاق ميزة "التجوّل الافتراضي" باستخدام مخطط عناوين URL
يمكن مشاهدة صور التجوّل الافتراضي من Google من داخل تطبيق خرائط Google لنظام التشغيل iOS. يمكنك تشغيل تطبيق خرائط Google لأجهزة iOS في وضع
التجوّل الافتراضي باستخدام مخطط عنوان URL comgooglemaps
عن طريق تعيين المعلمة mapmode
على streetview
. يظهر أدناه مثال لعنوان URL سيطلق ميزة التجوّل الافتراضي. لمزيد من المعلومات، يمكنك الرجوع إلى مستندات مخطط عناوين URL.
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
مواقع التجوّل الافتراضي ونقطة المشاهدة (POV)
يتيح لك GMSPanoramaCamera
تعيين منظور كاميرا التجوّل الافتراضي
من خلال الجمع بين رأس العرض التقديمي المخطط ودرجة الصوت والتكبير/التصغير.
ستوجّه مجموعات المقتطفات التالية الكاميرا إلى الجنوب ولأسفل قليلاً.
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
الاتجاه
يحدد موقع التجوّل الافتراضي موضع تركيز الكاميرا لإحدى الصور، ولكنه لا يحدد اتجاه الكاميرا لهذه الصورة.
لهذا الغرض، يعرّف الكائن GMSOrientation
خاصيتين:
- تحدد
heading
زاوية التدوير حول موضع الكاميرا بالدرجات مقارنةً بالاتجاه الشمالي الحقيقي. تُقاس العناوين باتجاه عقارب الساعة: صحيح أن الشمال يساوي 0، والشرق 90، والجنوب 180، والغرب 270. pitch
(القيمة التلقائية لـ0
) تحدد تباين الزاوية "لأعلى" أو "لأسفل" من طبقة الصوت الأولية المبدئية، والتي تكون غالبًا (ولكن ليس دائمًا) مسطحة أفقيًا. (على سبيل المثال، ستُظهر الصورة الملتقطة على تلة درجة صوت افتراضية غير أفقية.) يتم قياس زوايا العرض من خلال قيم موجبة للأعلى (حتى +90 درجة مستقيمة وتميلًا إلى درجة الصوت الافتراضية) والقيم السالبة تنظر إلى الأسفل (إلى-90 درجة مباشرةً ومتعامدًا مع درجة الصوت التلقائية).
توسيع
يدعم التجوّل ثلاثي الأبعاد مستويات مختلفة من تفاصيل الصورة من خلال استخدام التكبير/التصغير. يمكنك تعيين مستوى التكبير أو التصغير بشكل آلي، أو يمكن للمستخدمين تغيير المستوى في العارض من خلال التصغير أو التكبير بإصبعين.
تحريك الكاميرا
بعد إنشاء GMSPanoramaView
، وضبطه إما على ضبط
الكاميرا أو ضبط الكاميرا التلقائية، يمكنك تغييره بإحدى الطرق المتعددة. عند تغيير الكاميرا، سيكون لديك خيار تحريك حركة الكاميرا الناتجة. تدخل الصورة المتحركة بين سمات الكاميرا الحالية وسمات الكاميرا الجديدة.
يمكنك تعديل الكائن GMSPanoramaCamera
، وضبطه على السمة camera
في GMSPanoramaView
. سيؤدي هذا إلى التقاط الكاميرا إلى المنظور الجديد بدون رسوم متحركة. يمكن إنشاء GMSCameraPosition
لتهيئة
أي تركيبة من الاتجاه والتكبير/التصغير.
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
يمكنك تحريك عملية النقل من خلال استدعاء طريقة
animateToCamera:animationDuration:
في GMSPanoramaView
.
بالإضافة إلى ذلك، يمكنك التحكّم في الكاميرا باستخدام ميزة "الرسوم المتحركة الأساسية". أصبح هذا متاحًا من خلال CALayer
المخصّص في GMSPanoramaView
،
GMSPanoramaLayer
.
علامات في التجوّل الافتراضي
يستطيع الكائن GMSPanoramaView
عرض محددات الخريطة. يمكنك استخدام الكائن GMSMarker
نفسه على الكائن GMSMapView
أو الكائن GMSPanoramaView
من خلال ضبط الخصائص المقابلة له:
Swift
// Create a marker at the Eiffel Tower let position = CLLocationCoordinate2D(latitude: 48.858, longitude: 2.294) let marker = GMSMarker(position: position) // Add the marker to a GMSPanoramaView object named panoView marker.panoramaView = panoView // Add the marker to a GMSMapView object named mapView marker.map = mapView
Objective-C
// Create a marker at the Eiffel Tower CLLocationCoordinate2D position = CLLocationCoordinate2DMake(48.858,2.294); GMSMarker *marker = [GMSMarker markerWithPosition:position]; // Add the marker to a GMSPanoramaView object named panoView marker.panoramaView = panoView; // Add the marker to a GMSMapView object named mapView marker.map = mapView;
سيتم تغيير حجم العلامات كدالّة للمسافة بين موضع
العلامة وموقع GMSCameraView
. إذا أصبحت هذه المسافة كبيرة جدًا، فستصبح العلامة صغيرة جدًا بشكل لا يتيح عرضها، وسيتم إخفاؤها من العرض.
اضبط السمة panoramaView
على nil
لإزالتها من
GMSPanoramaView
.
Swift
marker.panoramaView = nil
Objective-C
marker.panoramaView = nil;
الأحداث
يمكنك الاستماع إلى الأحداث التي تجري في بانوراما التجوّل الافتراضي، على سبيل المثال عندما ينقر المستخدم على البانوراما. للاستماع إلى الأحداث، يجب تنفيذ بروتوكول
GMSPanoramaViewDelegate
. يمكنك الاطّلاع على
دليل الأحداث الشامل وعلى قائمة الطرق المتاحة في
GMSPanoramaViewDelegate
.