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 באמצעות אמצעי תשלום אחד (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

מיקומים ונקודת מבט (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) מגדיר את שונות הזווית "up" או 'למטה' מ- גובה הצליל ההתחלתי של המצלמה שמוגדר כברירת מחדל, והוא לרוב (אבל לא תמיד) שטוח אופקי. (לדוגמה, סביר להניח שתמונה שצולמה על גבעה תציג ברירת המחדל למצגת מכירות שאינה אופקית.) זוויות היצירה נמדדות באמצעות ערכים חיוביים כלפי מעלה (עד +90 מעלות ישר למעלה ואורתוגונלית ל) ערך ברירת המחדל של גובה הצליל) וערכים שליליים עם מבט כלפי מטה (ל-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. בנוסף, אפשר לשלוט במצלמה באמצעות 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.