בסקירה הכללית הזו מוסבר איך להגדיר מפה שנוספה לאפליקציה ל-iOS באמצעות SDK של מפות ל-iOS.
סקירה כללית
אחרי שמוסיפים מפה לאפליקציה, אפשר להגדיר אפשרויות ראשוניות וזמן ריצה הגדרות המפה. לפרטים על הוספת מאגר תגים של מפות, אפשר לעיין במאמר הוספת מפה.
ההגדרות הראשוניות של המפה כוללות את הדברים הבאים:
- מיקום המצלמה, כולל: מיקום, זום, כיוון והטיה. צפייה מצלמה ותצוגה לקבלת פרטים על מיקום המצלמה.
- צבע הרקע של המפה.
- סוג המפה.
- רכיבי ממשק המשתמש להצגה, כמו לחצני הזום מצפן.
- התנועות להפעלה.
בזמן הריצה ניתן לקבוע את ההגדרות האלה והגדרות נוספות להוספה, על ידי
מעדכנים את
GMSMapView
לאובייקט.
אפשרויות מפה
באתחול תצוגת המפה, אפשרויות התצורה נקבעות עם
GMSMapViewOptions
המאפיינים של האפשרויות כוללים את frame
, camera
, mapID
או
backgroundColor
אפשרויות מפה | |
---|---|
מסגרת | ערך:
CGRect מסגרת המפה. ברירת המחדל היא CGRectZero.
|
מצלמה | ערך:
GMSCameraPosition מיקום ברירת המחדל של מצלמת המפה.
|
mapID | ערך:
GMSMapID מזהה מפה של Google. פרמטר אופציונלי.
|
backgroundColor | ערך:
UIColor ברירת המחדל היא UIColor.lightGray
|
הגדרת אפשרויות המפה
אתם יכולים להגדיר מאפייני אפשרויות משלכם, או להעביר מהם
GMSMapViewOptions
עם ערכי ברירת מחדל ישירות ל-GMSMapView
.
Swift
let options = GMSMapViewOptions() options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6) let mapView = GMSMapView(options:options)
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
דוגמה להעברת אובייקט GMSMapViewOptions
עם ערכי ברירת מחדל
ישירות אל GMSMapView
.
Swift
let options = GMSMapViewOptions() let mapView = GMSMapView(options:options) //initialized with default values
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; //initialized with default values
הגדרת צבע הרקע
כשעובדים במצב כהה או עוברים בין תצוגות מפה, כדאי:
לשנות את צבע הרקע של המפה שמוגדר כברירת מחדל. אפשר לעשות זאת באמצעות הגדרת
אפשרויות מפה backgroundColor
.
Swift
let options = GMSMapViewOptions() options.backgroundColor = UIColor.yellowColor let mapView = GMSMapView(options:options)
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.backgroundColor = UIColor.yellowColor; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
סוגי מפה
אפשר להתאים אישית את המפה באמצעות אחד מסוגי המפה. סוג המפה קובע את הייצוג הכולל של המפה. לדוגמה, אטלס בדרך כלל מכיל מפות פוליטיות שמתמקדות בהצגת גבולות, ומפות כבישים שמוצגות את כל הכבישים בעיר או באזור מסוימים. ה-SDK של מפות Google עבור iOS מציע את סוגי המפות הבאים:
סוג מפה | |
---|---|
רגיל | ערך:
kGMSTypeNormal מפת דרכים אופיינית. מציג כבישים, חלק מהתכונות שנבנו על ידי
בני אדם ותכונות טבעיות חשובות כמו נהרות. תוויות של דרכים ותכונות
גלויים גם כן. תומכת בהגדרת ערכת הצבעים של המפה לכהה, בהיר
או לפעול לפי הגדרות המערכת.
|
היברידי | ערך:
kGMSTypeHybrid נתוני צילומי לוויין עם מפות כבישים שנוספו. דרך ותכונה
אפשר לראות גם את התוויות. |
לוויין | ערך:
kGMSTypeSatellite נתונים של צילומי לוויין. אין תוויות של דרכים ותכונות
גלוי.
|
פני השטח | ערך:
kGMSTypeTerrain נתונים טופוגרפיים. המפה כוללת צבעים, קווי מתאר ותוויות,
והצללה של נקודות מבט. גם חלק מהכבישים והתוויות מוצגים. תמיכה
הגדרת ערכת הצבעים של המפה לכהה או בהיר, או בהתאם להגדרות המערכת.
|
ללא | ערך:
kGMSTypeNone אין משבצות מפה. משבצות המפה הבסיסית לא יוצגו. המצב הזה הוא
שימושי בשילוב עם אריחים
ארבע שכבות שונות. התצוגה של נתוני התנועה מושבתת כאשר סוג המפה הוא
מוגדר ל'ללא'. |
שינוי סוג המפה
כדי להגדיר את סוג המפה, יש להקצות ערך חדש ל-GMSMapView.mapType
לנכס. לדוגמה, כדי להציג סוג של מפת לוויין:
Swift
let options = GMSMapViewOptions() options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6) let mapView = GMSMapView(options:options) mapView.mapType = .satellite
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; mapView.mapType = kGMSTypeSatellite;
הבורר הבא מציג השוואה של פני השטח, מפות רגילות ומפות היברידיות עבור אותו מיקום:
מפות פנים
עם זום גבוה, ה-SDK של מפות Google ל-iOS יציג תוכניות קומה עבור
מתחמים פנימיים כגון נמלי תעופה, מרכזי קניות, חנויות קמעונאיות גדולות ותחבורה ציבורית
תחנות שונות. תוכניות קומה בתוך מבנים משולבות במשבצות ברירת המחדל של המפה עבור
'רגיל' סוג המפה (kGMSTypeNormal
), והן מופעלות באופן אוטומטי כאשר
משתמש מגדיל את התצוגה ונעלם כשהמפה מוקטנת.
אפשר להשבית את מפות הפנים על ידי הגדרת המאפיין indoorEnabled
של
GMSMapView
עד NO
.
Swift
mapView.isIndoorEnabled = false
Objective-C
mapView.indoorEnabled = NO;
לחלופין, אפשר להשבית רק שליטה בבוחר הקומות.
הוספת תוכניות קומה
תוכניות קומה זמינות במודעות נבחרות מיקומים גיאוגרפיים. אם אין נתונים זמינים של תוכנית קומה לגבי מבנה שברצונך להדגיש באפליקציה שלכם, תוכלו:
- הוספת קומה התוכניות ישירות למפות Google. כך התוכניות שלך זמינות לכל המשתמשים של מפות Google.
- להציג תוכנית קומה בתור שכבת-על של קרקע. הפעולה הזו מפעילה רק משתמשי האפליקציה שלך כדי להציג את תוכניות הקומה שלך.
שכבת התנועה
אפשר להעניק למשתמשים את היכולת להציג את המפה עם צפיפות התנועה
מידע שמוצג מעליו. זהו סיכום חזותי של
במצב התנועה המקומית. כדי להפעיל או להשבית את שכבת התנועה, ניתן להתקשר אל
ה
trafficEnabled
. הדוגמה הבאה מראה איך שכבת התנועה עשויה להופיע במפה.
נגישות
כברירת מחדל, רכיבי הנגישות במפה מוסתרים. אפשר להפעיל
נגישות על ידי הגדרת המאפיין accessibilityElementsHidden
של
GMSMapView
עד NO
. פעולה זו תגרום ליצירת רכיבי נגישות
שכבות-על של אובייקטים (כמו GMSMarker
וחלונות מידע, GMSPolyline
וכו').
Swift
mapView.accessibilityElementsHidden = false
Objective-C
mapView.accessibilityElementsHidden = NO;
הנכס הזה תואם לפרוטוקול UIAccessibility
הלא רשמי, מלבד
ערך ברירת המחדל ב-SDK של מפות Google ל-iOS הוא YES
.
המיקום שלי
כברירת מחדל, לא מוצגים נתוני מיקום במפה. אפשר להפעיל את האפשרות הכחולה
מיקום" כיוון המצפן והנקודות על ידי הגדרה של myLocationEnabled
במצב מופעל
GMSMapView
.
Swift
mapView.isMyLocationEnabled = true
Objective-C
mapView.myLocationEnabled = YES;
הפעלת התכונה הזו מספקת את המיקום הנוכחי של המשתמש דרך
נכס myLocation
. ייתכן שהנכס הזה לא יהיה זמין באופן מיידי - עבור
לדוגמה, אם מערכת iOS מבקשת מהמשתמש להעניק לך גישה לנתונים האלה. זה כן
nil
במקרה הזה.
Swift
print("User's location: \(String(describing: mapView.myLocation))")
Objective-C
NSLog(@"User's location: %@", mapView.myLocation);
בניינים בתלת ממד
בערים רבות, אם תצפו בהן מקרוב, הבניינים בתלת-ממד יוצגו כגלויים לכולם בתמונה של סיאטל, וושינגטון למטה.
![מפה תלת-ממדית של בניינים בירושלים.](https://developers.google.cn/static/maps/documentation/ios-sdk/images/ios-3d-buildings.png?authuser=0000&hl=he)
אפשר להשבית את הצגת הבניינים התלת-ממדיים על ידי הגדרה של
GMSMapView
ב-Swift או ב-Objective-C, כפי שמוצג בהמשך:
Swift
mapView.isBuildingsEnabled = false
Objective-C
[mapView setBuildingsEnabled:NO];
מרווח פנימי במפה
מפת Google מיועדת למלא את כל האזור שהוגדר על ידי GMSMapView
.
יש כמה היבטים במראה ובהתנהגות של המפה שמוגדרים לפי המאפיינים
של התצוגה:
- יעד המצלמה משקף את מרכז האזור המרופד.
- פקדי המפה ממוקמים ביחס לקצוות המפה.
- מופיע מידע משפטי, כמו הצהרות על זכויות יוצרים או הלוגו של Google בקצה התחתון של המפה.
אפשר להוסיף מרווח פנימי סביב שולי המפה באמצעות
GMSMapView
padding
. המפה ממשיכה להתמלא
כל המאגר, אבל טקסט ושליטה במיקום, בתנועות במפה ובמצלמה
והתנועות שלהם פועלות כאילו הן מוצבות במרחב קטן יותר. התוצאה היא
את השינויים הבאים:
- תנועות מצלמה באמצעות קריאות API או לחיצות על לחצנים (למשל, מצפן, מיקום) ביחס לאזור המרופד.
GMSMapView
.projection
מחזירה היטל שכולל רק את הערכים הריקים אזור.- הפקדים של ממשק המשתמש מיסטים מהקצה של הקונטיינר על ידי הרכיב שצוין במספר הנקודות.
הריפוד יכול להיות שימושי כשמתכננים ממשקי משתמש שחופפים לחלק מסוים מהמפה. לדוגמה, בתמונה יש ריפוד של המפה לאורך הקצה העליון והקצה הימני. פקדי המפה וטקסט משפטי גלויים מוצגים לאורך השוליים מוצג בירוק, בזמן שהמפה ממשיכה למלא את כל המאגר, מוצגת בכחול. בדוגמה הזאת, אפשר להציג תפריט שמסתיים בצד ימין של במפה בלי להסתיר את פקדי המפה.
כדי להוסיף מרווח פנימי למפה, יוצרים אובייקט UIEdgeInsets
ומעבירים אותו אל
GMSMapView
.נכס padding
.
Swift
// Insets are specified in this order: top, left, bottom, right let mapInsets = UIEdgeInsets(top: 100.0, left: 0.0, bottom: 0.0, right: 300.0) mapView.padding = mapInsets
Objective-C
// Insets are specified in this order: top, left, bottom, right UIEdgeInsets mapInsets = UIEdgeInsetsMake(100.0, 0.0, 0.0, 300.0); mapView.padding = mapInsets;
ערכת הצבעים של המפה
עבור מפות מסוג 'רגיל' ו'פני שטח', ניתן להגדיר את ערכת הצבעים של המפה לכהה, או להשתמש בהגדרות המערכת הנוכחיות. לדוגמה, אפשר להכהות או הבהר את ערכת הצבעים של המפה על סמך השעה ביום או שימוש בפנים או בחוץ של המכשיר.
שימוש ב-GMSMapView
overrideUserInterfaceStyle:
כדי להגדיר ולעדכן את ערכת הצבעים של המפה.
Swift
let options = GMSMapViewOptions() // Map is init to use light mode by default. let mapView = GMSMapView(options: options) // Set map to use dark mode. mapView.overrideUserInterfaceStyle = .dark // Set map to use light mode. mapView.overrideUserInterfaceStyle = .light // Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle mapView.overrideUserInterfaceStyle = .unspecified
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; // Map is init to always use light mode. GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; // Set map to use dark mode. mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleDark; // Set map to use light mode. mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight; // Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleUnspecified;