
התכונה Street View במפות Google מאפשרת לכם לראות מקומות ברחבי העולם באמצעות תמונות ב-360 מעלות בגובה הרחוב. אתם יכולים לסייר באתרים מפורסמים בעולם, לראות פלאי טבע, לנווט בנסיעה או להציג את החלק החיצוני של העסק שלכם.
סקירה כללית
Google Street View מספק תצוגות פנורמיות של 360 מעלות מכבישים ייעודיים בכל היקף גיאוגרפי הכיסוי שלו. הכיסוי שזמין דרך ה-SDK זהה לכיסוי של אפליקציית מפות Google ל-iOS או של https://maps.google.com/. במאמר מידע על Street View תוכלו לקרוא מידע נוסף על Street View ולראות את האזורים הנתמכים במפה אינטראקטיבית.
ה-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 על סמך הקואורדינטה.
ה-method
moveNearCoordinateמבקשת תצוגת פנורמה ליד הקואורדינטה.השיטה
moveNearCoordinate:radiusדומה, אבל מאפשרת לציין רדיוס חיפוש במטרים סביב הקואורדינטה.השיטה
moveNearCoordinate:sourceמאפשרת לציין מקור. מקור הוא שימושי אם רוצים להגביל את Street View כך שיחפש רק תמונות פנורמיות שנמצאות בחוץ. כברירת מחדל, תמונות פנורמיות של מיקומים הן פנימיות או חיצוניות. שימו לב: יכול להיות שאין תמונות פנורמיות של חוץ במיקום שצוין.ה-method
moveNearCoordinate:radius:sourceמאפשרת לציין גם רדיוס וגם מקור.
צפייה בתמונות Street View
הוספת חלון צפייה ב-Street View
השלבים הבסיסיים להוספת צופה הם:
- (פעם אחת) פועלים לפי השלבים שמפורטים בקטע תחילת העבודה כדי לקבל את ה-SDK, להשיג מפתח ולהוסיף את ה-frameworks הנדרשים.
- יצירה או עדכון של
ViewController. אם התמונה הפנורמית תוצג כשבקר התצוגה הזה יהפוך לגלוי, הקפידו ליצור אותה בתוך השיטהloadView. - יוצרים ומפעילים מחלקה של
GMSPanoramaViewבאמצעות ה-methodGMSPanoramaViewinitWithFrame:. אם רוצים להשתמש בזה בתור התצוגה היחידה של בקר התצוגה, אפשר להשתמש ב-CGRectZeroבתור המסגרת של המפה – הגודל של המפה ישתנה באופן אוטומטי. - מגדירים את האובייקט
GMSPanoramaViewבתור התצוגה של ה-view controller. לדוגמה,self.view = panoView;. - מגדירים את המיקום של תמונת Street View באמצעות שיטה כמו
moveNearCoordinate:.
בדוגמה הבאה מוסיפים לאפליקציה את Street View Viewer.
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
התאמה אישית של חלון הצפייה
אתם יכולים להתאים אישית את ה-Viewer על ידי הגבלת התנועות הזמינות. כברירת מחדל, האפשרויות להזזה, לשינוי מרחק התצוגה ולמעבר לתמונות פנורמיות סמוכות מופעלות.
תנועות ספציפיות נשלטות באמצעות מאפיינים של 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- מעלות ישר למטה ובזווית ישרה לעלרוד שמוגדר כברירת מחדל).
Zoom
ב-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.