التجوّل الافتراضي

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
اختيار نظام أساسي: Android iOS JavaScript

تتيح لك ميزة التجوّل الافتراضي في خرائط 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 تحديد كل من النطاق الجغرافي والمصدر.

عرض صور التجوّل الافتراضي

إضافة عارض التجوّل الافتراضي

الخطوات الأساسية لإضافة مُشاهد هي:

  1. (مرة واحدة) اتّبِع الخطوات الواردة في البدء للحصول على حزمة تطوير البرامج (SDK)، والحصول على مفتاح وإضافة أُطر العمل المطلوبة.
  2. إنشاء ViewController أو تحديثه. في حالة عرض البانوراما عندما تصبح وحدة تحكم طريقة العرض هذه مرئية، تأكد من إنشائها ضمن طريقة loadView.
  3. يمكنك إنشاء فئة GMSPanoramaView وإنشاء مثيل لها باستخدام طريقة GMSPanoramaView initWithFrame:. إذا كان هذا هو العرض الوحيد لوحدة التحكم في العرض، يمكن استخدام CGRectZero كإطار للخريطة - سيتم تغيير حجم الخريطة تلقائيًا.
  4. يمكنك ضبط الكائن GMSPanoramaView كعرض وحدة التحكُّم في العرض، مثل self.view = panoView;.
  5. يمكنك ضبط موقع صورة "التجوّل الافتراضي" باستخدام طريقة مثل 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.