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 עשוי להשתנות עם הזמן, והוא לא מתאים לשימוש לטווח ארוך או לקובץ עזר בתוך הקוד. הדרך הטובה ביותר לספק גישה פרוגרמטית לתמונות Street View שונות היא באמצעות panoramaID.
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, מקבלים מפתח ומוסיפים את ה-frameworks הנדרשות.
  2. יוצרים או מעדכנים ViewController. אם התמונה הפנורמית תוצג כשבקר התצוגה יהיה גלוי, הקפידו ליצור אותו בשיטה loadView.
  3. יצירה ויצירה של מחלקה GMSPanoramaView באמצעות השיטה 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

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

זום

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.