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

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

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

نظرة عامة

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

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

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

كل صورة بانورامية 360 درجة في "التجوّل الافتراضي" هي صورة أو مجموعة من الصور التي توفر عرضًا كاملاً بزاوية 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.