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

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

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

نظرة عامة

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

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

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

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

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

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

يتم تحديد المناظر البانورامية في "التجوّل الافتراضي" من خلال أحد عنصرَي البيانات الوصفية التاليَين:

panoramaID
المعرّف الفريد لمشهد بانورامي في "التجوّل الافتراضي" قد يتغيّر هذا panoramaID بمرور الوقت، ولا يُعدّ مناسبًا كمرجع طويل المدى أو مُبرمَج بشكلٍ ثابت. من الأفضل استخدام panoramaID لتوفير إمكانية الوصول الآلي إلى صور مختلفة في "التجوّل الافتراضي".
coordinate
الموقع الجغرافي الدقيق لهذه الصورة، مُعبَّرًا عنه على شكل CLLocationCoordinate2D. استخدِم coordinate لأجل التخزين الدائم لموقع بانورامي، أو لترجمة إجراءات المستخدم على الخريطة إلى صورة في "التجوّل الافتراضي".

يتم تخزين كل من panoramaID وcoordinate كسمات لعنصر GMSPanorama. يمكنك طلب GMSPanorama من GMSPanoramaService باستخدام coordinate أو panoramaID. وسيتضمّن العنصر المنتج كلاً من قطعتَي البيانات الوصفية، بالإضافة إلى صفيف من الروابط المؤدية إلى مناظر بانورامية قريبة.

تحديد موقع الصورة البانورامية

يمكن تحديد موقع الصورة البانورامية في "التجوّل الافتراضي" استنادًا إلى الإحداثيات.

  • تطلب طريقة moveNearCoordinate صورة بانورامية بالقرب من الإحداثيات.

  • تتشابه طريقة moveNearCoordinate:radius، ولكنها تسمح لك بتحديد دائرة بحث، بوحدة متر، حول الإحداثية.

  • تسمح لك طريقة moveNearCoordinate:source بتحديد مصدر. يكون المصدر مفيدًا إذا كنت تريد حصر "التجوّل الافتراضي" في البحث عن panoramas التي تكون خارج المباني فقط. تكون الصور البانورامية للمواقع الجغرافية تلقائيًا إما داخل أو خارج المبنى. يُرجى العِلم أنّه قد لا تتوفّر صور بانورامية في الهواء الطلق للموقع الجغرافي المحدّد.

  • تسمح لك طريقة 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.