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 של מפות ל-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 בתור התצוגה של ה-view controller, למשל 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 יש תמיכה ברמות שונות של פירוט התמונה באמצעות שימוש ב-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.

סמנים ב-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. אם המרחק הזה יגדל מדי, הסמן יהיה קטן מדי כדי להופיע וייעלם מהתצוגה.

כדי להסיר אותו מ-GMSPanoramaView, מגדירים את המאפיין panoramaView לערך nil.

Swift

marker.panoramaView = nil
      

Objective-C

marker.panoramaView = nil;
      

אירועים

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