
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 על סמך הקואורדינטה.
השיטה
moveNearCoordinateמבקשת פנורמה ליד הקואורדינטה.השיטה
moveNearCoordinate:radiusדומה, אבל מאפשרת לציין רדיוס חיפוש במטרים סביב הקואורדינטה.השיטה
moveNearCoordinate:sourceמאפשרת לציין מקור. הגדרת המקור שימושית אם רוצים להגביל את Street View כך שיחפש רק תמונות פנורמיות שצולמו בחוץ. כברירת מחדל, תמונות פנורמיות של מיקומים הן פנימיות או חיצוניות. שימו לב: יכול להיות שאין תמונות פנורמיות בחוץ במיקום שצוין.השיטה
moveNearCoordinate:radius:sourceמאפשרת לציין גם רדיוס וגם מקור.
צפייה בתמונות Street View
הוספת מציג Street View
השלבים הבסיסיים להוספת צופה הם:
- (פעם אחת) פועלים לפי השלבים במאמר תחילת העבודה כדי לקבל את ה-SDK, להשיג מפתח ולהוסיף את המסגרות הנדרשות.
- יצירה או עדכון של
ViewController. אם הפנורמה תוצג כשבקר התצוגה הזה יהפוך לגלוי, צריך לוודא שיוצרים אותה בשיטהloadView. - יוצרים מופע של מחלקת
GMSPanoramaViewבאמצעות ה-methodGMSPanoramaViewinitWithFrame:. אם רוצים להשתמש בזה בתור התצוגה היחידה של בקר התצוגה, אפשר להשתמש ב-CGRectZeroבתור המסגרת של המפה – הגודל של המפה ישתנה באופן אוטומטי. - מגדירים את האובייקט
GMSPanoramaViewכתצוגה של בקר התצוגה. לדוגמה,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
אפשר לצפות בתמונות Street View של Google באפליקציית מפות 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.