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

اختيار النظام الأساسي: 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.