התכונה 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
השלבים הבסיסיים להוספת צופה הם:
- (פעם אחת) פועלים לפי השלבים המפורטים במאמר תחילת העבודה כדי לקבל את ה-SDK, לקבל מפתח ולהוסיף את המסגרות הנדרשות.
- יוצרים או מעדכנים
ViewController
. אם התצוגה הפנורמית תוצג כשמרכז הבקרה של התצוגה יהיה גלוי, חשוב ליצור אותה בתוך השיטהloadView
. - יוצרים ומגדירים מופע של הכיתה
GMSPanoramaView
באמצעות השיטהinitWithFrame:
שלGMSPanoramaView
. אם התצוגה הזו תשמש בתור התצוגה היחידה של ה-View Controller, אפשר להשתמש ב-CGRectZero
כמסגרת של המפה – גודל המפה ישתנה באופן אוטומטי. - מגדירים את האובייקט
GMSPanoramaView
בתור התצוגה של ה-view controller, למשלself.view = panoView;
. - מגדירים את המיקום של תמונת 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
מוסבר איך עושים את זה.