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

اختيار النظام الأساسي: 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 وأنشئ مثيلاً لها باستخدام الإجراء initWithFrame: في GMSPanoramaView. إذا كان سيتم استخدام هذا العارض كالعرض الوحيد لوحدة التحكّم في العرض، يمكن استخدام 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

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

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