Street View

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

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

סקירה כללית

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

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

תמונות פנורמיות ב-Street View

כל פנורמה ב-Street View היא תמונה או קבוצת תמונות, שמספקת תצוגה מלאה ב-360 מעלות ממיקום יחיד. התמונות תואמות להיטל הזוויתי (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 באמצעות השיטה initWithFrame: של GMSPanoramaView. אם רוצים להשתמש בתצוגה הזו כתצוגה היחידה של בקר התצוגה, אפשר להשתמש ב-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 עם סכימת כתובת האתר comgooglemaps על ידי הגדרת הפרמטר mapmode ל-streetview. דוגמה לכתובת אתר שתפעיל את Street View מופיעה למטה. מידע נוסף זמין במסמכי התיעוד בנושא סכימת כתובות URL.

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

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

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- מעלות ישרות כלפי מטה ואורתוגונליים לגובה ברירת המחדל).

Zoom

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. בנוסף, אפשר לשלוט במצלמה באמצעות אנימציה ליבה. האפשרות הזו זמינה דרך 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.