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

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

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

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

  • באמצעות moveNearCoordinate:radius:source אפשר לציין גם רדיוס וגם מקור.

הצגה של תמונות Street View

הוספת צופה ב-Street View

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

  1. (Once) פועלים לפי השלבים בקטע תחילת העבודה כדי לקבל את ה-SDK, מקבלים מפתח ומוסיפים את ה-frameworks הנדרשות.
  2. יצירה או עדכון של ViewController. אם הפנורמה תוצג כאשר בקר התצוגה יהפוך לגלוי, הקפידו ליצור אותה באמצעות ה-method 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. דוגמה לכתובת אתר שתפעיל את 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 תומך ברמות שונות של פרטי תמונה באמצעות שינוי מרחק התצוגה. תוכלו להגדיר את רמת הזום באופן פרוגרמטי, או שהמשתמשים יוכלו לשנות את הרמה במציג על ידי תנועת צביטה לשינוי מרחק התצוגה.

הזזת המצלמה

אחרי שיוצרים את 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];
      

אפשר להוסיף אנימציה למעבר על ידי קריאה ל-method 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.