Street View

בחירת פלטפורמה: Android iOS JavaScript

‫Street View במפות Google מאפשר לכם לחקור מקומות ברחבי העולם באמצעות תמונות ב-360 מעלות ברמת הרחוב. אתם יכולים לראות ציוני דרך בעולם, לגלות פלאי טבע, לתכנן טיול או להציג את החלק החיצוני של העסק שלכם.

סקירה כללית

‫Google Street View מספק תצוגות פנורמיות של 360 מעלות מכבישים ייעודיים בכל אזור הכיסוי. הכיסוי שזמין דרך ה-SDK זהה לכיסוי שזמין באפליקציית מפות Google ל-iOS או ב-https://maps.google.com/. במאמר מידע על Street View אפשר לקרוא מידע נוסף על Street View ולראות את האזורים הנתמכים במפה אינטראקטיבית.

‫Maps SDK for iOS מספק שירות Street View לקבלת תמונות שמשמשות ב-Street View במפות Google ולשינוי שלהן. תמונות Street View מוחזרות כפנורמות ומוצגות בצופה של Street View – אובייקט מסוג GMSPanoramaView.

פנורמות ב-Street View

כל תמונת פנורמה ב-Street View היא תמונה, או קבוצה של תמונות, שמציגה תצוגה מלאה של 360 מעלות ממיקום יחיד. התמונות תואמות להיטל Equirectangular (Plate Carrée), שמכיל 360 מעלות של תצוגה אופקית (היקפית מלאה) ו-180 מעלות של תצוגה אנכית (מלמעלה למטה). הפנורמה ב-360 מעלות שמתקבלת מגדירה הטלה על כדור, כשהתמונה עוטפת את המשטח הדו-ממדי של הכדור הזה.

אפשר לצפות בפנורמות של Street View באמצעות האובייקט GMSPanoramaView. האובייקט הזה מספק כלי לצפייה שיציג את התמונה הפנורמית כספירה, עם מצלמה במרכז שלה. אפשר לשלוט באופן פרוגרמטי על כיוון המצלמה, וגם על כמה מאפיינים להתאמה אישית של הצופה.

גישה לנתוני Street View

תמונות פנורמה ב-Street View מזוהות באמצעות אחד משני סוגי מטא-נתונים:

panoramaID
המזהה הייחודי של פנורמה ב-Street View. הערך הזה, panoramaID, עשוי להשתנות עם הזמן, ולכן לא מתאים כהפניה לטווח ארוך או כהפניה שמוטמעת בקוד. ה-panoramaID מתאים במיוחד למתן גישה פרוגרמטית לתמונות שונות ב-Street View.
coordinate
המיקום המדויק של התמונה הזו, שמוצג כ-CLLocationCoordinate2D. אפשר להשתמש ב-coordinate כדי לאחסן באופן קבוע מיקום פנורמי, או כדי לתרגם פעולות של משתמשים במפה לתמונת Street View.

המאפיינים panoramaID ו-coordinate מאוחסנים כמאפיינים של האובייקט GMSPanorama. אפשר לבקש GMSPanorama מהGMSPanoramaService באמצעות coordinate או panoramaID. האובייקט שיתקבל יכלול את שני חלקי המטא-נתונים, וגם מערך של קישורים לתמונות פנורמה סמוכות.

הגדרת המיקום של תמונת הפנורמה

אפשר להגדיר את המיקום של תמונת הפנורמה ב-Street View על סמך הקואורדינטות.

  • השיטה moveNearCoordinate מבקשת תמונת פנורמה בקרבת הקואורדינטה.

  • השיטה moveNearCoordinate:radius דומה, אבל מאפשרת לציין רדיוס חיפוש במטרים סביב הקואורדינטה.

  • השיטה moveNearCoordinate:source מאפשרת לציין מקור. מקור שימושי אם רוצים להגביל את Street View כך שיחפש רק תמונות פנורמיות שנמצאות בחוץ. כברירת מחדל, תמונות פנורמיות של מיקומים הן פנימיות או חיצוניות. שימו לב: יכול להיות שלא קיימות תמונות פנורמיות של מיקומים חיצוניים במיקום שצוין.

  • השיטה moveNearCoordinate:radius:source מאפשרת לציין גם רדיוס וגם מקור.

צפייה בתמונות Street View

הוספת כלי לצפייה ב-Street View

השלבים הבסיסיים להוספת צופה הם:

  1. (פעם אחת) פועלים לפי השלבים במאמר תחילת העבודה כדי לקבל את ה-SDK, לקבל מפתח ולהוסיף את המסגרות הנדרשות.
  2. יוצרים או מעדכנים ViewController. אם תמונת הפנורמה תוצג כשהבקר של התצוגה הזו יהפוך לגלוי, חשוב ליצור אותה בתוך השיטה loadView.
  3. יוצרים מופע של מחלקת GMSPanoramaView באמצעות ה-method‏ GMSPanoramaView initWithFrame:. אם רוצים להשתמש ב-CGRectZero כתצוגה היחידה של בקר התצוגה, אפשר להשתמש בו כמסגרת של המפה – המפה תשנה את הגודל שלה באופן אוטומטי.
  4. מגדירים את האובייקט GMSPanoramaView כתצוגה של בקר התצוגה. לדוגמה, self.view = panoView;.
  5. מגדירים את המיקום של תמונת Street View באמצעות שיטה כמו moveNearCoordinate:.

בדוגמה שלמטה מוסיפים לאפליקציה כלי לצפייה בתמונות Street View.

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];
      

הפעלת Street View באמצעות סכמת כתובת ה-URL

אפשר לראות תמונות של Google Street View באפליקציית מפות Google ל-iOS. אפשר להפעיל את אפליקציית מפות Google ל-iOS במצב Street View באמצעות סכימת כתובות ה-URL‏ comgooglemaps. לשם כך, צריך להגדיר את הפרמטר mapmode לערך streetview. למטה מופיעה דוגמה לכתובת URL שתפעיל את Street View. למידע נוסף, אפשר לעיין במסמכי התיעוד בנושא סכימת כתובות URL.

comgooglemaps://?center=46.414382,10.013988&mapmode=streetview

מיקומים ונקודות מבט (POV) ב-Street View

התג GMSPanoramaCamera מאפשר להגדיר את נקודת המבט של מצלמת Street View כשילוב של כיוון, זווית וזום.

קטע הקוד הבא יכוון את המצלמה דרומה, ומעט כלפי מטה.

Swift

panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
      

Objective-C

panoView.camera = [GMSPanoramaCamera cameraWithHeading:180
                                                 pitch:-10
                                                  zoom:1];
      

כיוון

מיקום ב-Street View מגדיר את המיקום של פוקוס המצלמה בתמונה, אבל הוא לא מגדיר את הכיוון של המצלמה בתמונה הזו. לשם כך, אובייקט GMSOrientation מגדיר שני מאפיינים:

  • heading מגדיר את זווית הסיבוב סביב מיקום המצלמה במעלות ביחס לצפון האמיתי. הכיוונים נמדדים עם כיוון השעון: צפון אמיתי הוא 0, מזרח הוא 90, דרום הוא 180 ומערב הוא 270.
  • pitch (ברירת המחדל היא 0) מגדיר את השונות של הזווית 'למעלה' או 'למטה' מהזווית האנכית הראשונית של ברירת המחדל של המצלמה, שהיא לרוב (אבל לא תמיד) אופקית. (לדוגמה, תמונה שצולמה על גבעה כנראה תציג הטיה שמוגדרת כברירת מחדל ושאינה אופקית). זוויות ההטיה נמדדות עם ערכים חיוביים כשמסתכלים למעלה (עד +90 מעלות ישר למעלה ובניצב להטיה שמוגדרת כברירת מחדל) וערכים שליליים כשמסתכלים למטה (עד ‎-90 מעלות ישר למטה ובניצב להטיה שמוגדרת כברירת מחדל).

שינוי מרחק התצוגה

ב-Street View אפשר להתקרב כדי לראות פרטים בתמונות. אפשר להגדיר את רמת הזום באופן פרוגרמטי, או לאפשר למשתמשים לשנות את הרמה בכלי הצפייה באמצעות תנועת צביטה לזום.

הזזת המצלמה

אחרי שיוצרים את 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.

סמנים ב-Street View

אובייקט 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;
      

אירועים

אתם יכולים להאזין לאירועים שמתרחשים בתמונת הפנורמה ב-Street View, למשל כשמשתמש מקיש על הפנורמה. כדי להאזין לאירועים, צריך להטמיע את הפרוטוקול GMSPanoramaViewDelegate. אפשר לעיין במדריך הכללי לאירועים וברשימת השיטות ב-GMSPanoramaViewDelegate.