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

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

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

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