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 ל-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. אם התצוגה הזו תשמש בתור התצוגה היחידה של ה-View Controller, אפשר להשתמש ב-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 מוסבר איך עושים את זה.