בסקירה הכללית הזו מוסבר איך להגדיר מפה שנוספה לאפליקציה ל-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);
בניינים בתלת ממד
בערים רבות, כשמציגים אותן מקרוב, אפשר לראות בניינים בתלת-ממד, כמו בתמונה של סיאטל שבמדינת וושינגטון שבהמשך.
כדי להשבית את התצוגה של בניינים בתלת-ממד, מגדירים את המאפיין המתאים 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;