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

اختيار النظام الأساسي: Android iOS JavaScript

تتيح لك ميزة "التجوّل الافتراضي" في "خرائط Google" استكشاف الأماكن حول العالم من خلال صور على مستوى الشارع بزاوية 360 درجة. يمكنك استكشاف المعالم العالمية أو مشاهدة عجائب الطبيعة أو التنقل في رحلة أو عرض الجزء الخارجي من نشاطك التجاري.

نظرة عامة

توفّر تقنية "التجوّل الافتراضي من Google" إطلالات بانورامية بزاوية 360 درجة من الطرق المحدّدة في جميع أنحاء منطقة تغطيتها. التغطية المتاحة من خلال حزمة SDK هي نفسها التغطية المخصصة لتطبيق "خرائط Google" لأجهزة iOS أو https://maps.google.com/. يمكنك معرفة المزيد عن "التجوّل الافتراضي" والاطّلاع على المناطق المتوافقة على خريطة تفاعلية، وذلك على صفحة لمحة عن "التجوّل الافتراضي".

توفر حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لنظام التشغيل iOS خدمة "التجوّل الافتراضي" للحصول على الصور المستخدمة في ميزة "التجوّل الافتراضي" في خرائط Google ومعالجتها. ويتم عرض صور "التجوّل الافتراضي" على شكل صور بانورامية ويتم عرضها من داخل عارض "التجوّل الافتراضي"، وهو كائن من النوع GMSPanoramaView.

الصور البانورامية في "التجوّل الافتراضي"

كل بانوراما التجوّل الافتراضي هي صورة أو مجموعة من الصور التي توفر عرضًا كاملاً بزاوية 360 درجة من موقع واحد. تتوافق الصور مع إسقاط متساوي المستطيلات (Plate Carrée)، والذي يحتوي على عرض أفقي بزاوية 360 درجة (التفاف كامل) و180 درجة للعرض العمودي (من العرض المستقيم إلى الأعلى) وتحدد الصورة البانورامية الناتجة بزاوية 360 درجة إسقاطًا على الكرة مع التفاف الصورة في السطح الثنائي الأبعاد لذلك المجال.

يمكن عرض الصور البانورامية في ميزة "التجوّل الافتراضي" باستخدام الكائن GMSPanoramaView. ويوفر هذا الكائن عارضًا يعرض البانوراما على شكل كرة، مع وجود كاميرا في منتصفها. يمكنك التحكم بطريقة برمجية في اتجاه الكاميرا، فضلاً عن عدة خصائص لتخصيص العارض.

الوصول إلى بيانات التجوّل الافتراضي

يتم تحديد الصور البانورامية للتجوّل الافتراضي بإحدى قطعتين من البيانات الوصفية:

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 درجة مستقيمة لأسفل وأفقيًا مع درجة الصوت الافتراضية).

Zoom

تدعم ميزة "التجوّل الافتراضي" مستويات مختلفة من تفاصيل الصورة من خلال استخدام التكبير/التصغير. يمكنك ضبط مستوى التكبير/التصغير آليًا، أو يمكن للمستخدمين تغيير مستوى التكبير/التصغير في العارض عن طريق الضغط بإصبعين للتكبير أو التصغير.

تحريك الكاميرا

بعد إنشاء كاميرا 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. بالإضافة إلى ذلك، يمكنك التحكّم في الكاميرا باستخدام Core Animation. تتوفر هذه الميزة من خلال 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.