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

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

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

نظرة عامة

توفّر خدمة "التجوّل الافتراضي من Google" إطلالات بانورامية بزاوية 360 درجة من الطرق المحدّدة في جميع أنحاء منطقة التغطية. تتطابق التغطية المتاحة من خلال حزمة تطوير البرامج مع التغطية المتاحة من خلال تطبيق "خرائط 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 في وضع "التجوّل الافتراضي" باستخدام comgooglemaps URL Scheme من خلال ضبط المَعلمة mapmode على streetview. في ما يلي مثال على عنوان URL سيؤدي إلى تشغيل "التجوّل الافتراضي". لمزيد من المعلومات، يُرجى الرجوع إلى مستندات مخطط عناوين URL.

comgooglemaps://?center=46.414382,10.013988&mapmode=streetview

المواقع الجغرافية في "التجوّل الافتراضي" ووجهة النظر

تتيح لك 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;
      

الفعاليات

يمكنك الاستماع إلى الأحداث التي تحدث في بانوراما Street View، مثل عندما ينقر مستخدم على البانوراما. للاستماع إلى الأحداث، يجب تنفيذ البروتوكول GMSPanoramaViewDelegate. اطّلِع على الدليل العام للأحداث وقائمة الطرق على GMSPanoramaViewDelegate.