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 על סמך הקואורדינטה.

  • ה-method‏ moveNearCoordinate מבקשת תצוגת פנורמה ליד הקואורדינטה.

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

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

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

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

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

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

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

בדוגמה הבאה מוסיפים לאפליקציה את Street View Viewer.

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
      

התאמה אישית של חלון הצפייה

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

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. בנוסף, אתם יכולים לשלוט במצלמה באמצעות 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.