בסקירה הכללית הזו מוסבר איך להגדיר מפה שנוספה לאפליקציה ל-iOS באמצעות SDK של מפות ל-iOS.
סקירה כללית
אחרי שמוסיפים מפה לאפליקציה, אפשר להגדיר את האפשרויות הראשוניות והגדרות זמן הריצה של המפה. פרטים על הוספת מאגר מפות מופיעים במאמר הוספת מפה.
הגדרות המפה הראשוניות כוללות את האפשרויות הבאות:
- מיקום המצלמה, כולל: מיקום, זום, כיוון והטיה. פרטים על מיקום המצלמה זמינים בקטע מצלמה ותצוגה.
- צבע הרקע של המפה.
- סוג המפה.
- רכיבי ממשק המשתמש שרוצים להציג, כמו לחצני הזום והמצפן.
- את המחוות שרוצים להפעיל.
תוך כדי זמן הריצה, אפשר להגדיר את ההגדרות האלה ואת הגדרות נוספות על ידי עדכון האובייקט GMSMapView
.
אפשרויות במפה
כשמפעילים את תצוגת המפה, אפשרויות התצורה מוגדרות באמצעות GMSMapViewOptions
.
מאפייני האפשרויות כוללים את frame
, camera
, mapID
או backgroundColor
.
אפשרויות מפה | |
---|---|
מסגרת | ערך:
CGRect מסגרת המפה. ברירת המחדל היא CGRectZero.
|
מצלמה | ערך:
GMSCameraPosition מיקום המצלמה שמוגדר כברירת מחדל במפה.
|
mapID | ערך:
GMSMapID מזהה מפה של Google. פרמטר אופציונלי.
|
backgroundColor | ערך:
UIColor ברירת המחדל היא UIColor.lightGray
|
הגדרת אפשרויות המפה
אפשר להגדיר מאפייני אפשרות משלכם, או להעביר ישירות ל-GMSMapView
מופע של GMSMapViewOptions
עם ערכי ברירת מחדל.
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 של מפות ל-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 של מפות ל-iOS יוצגו תוכניות קומות של מרחבים פנימיים כמו שדות תעופה, מרכזי קניות, חנויות קמעונאיות גדולות ותחנות תחבורה ציבורית. תוכניות קומות של מבנים משולבות באריחי המפה שמוגדרים כברירת מחדל לסוג המפה 'רגיל' (kGMSTypeNormal
). הן מופעלות באופן אוטומטי כשהמשתמש מגדיל את התצוגה, ומתבלבלות כשהתצוגה במפה קטנה יותר.
כדי להשבית את המפות הפנימיות, צריך להגדיר את הנכס indoorEnabled
של GMSMapView
ל-NO
.
Swift
mapView.isIndoorEnabled = false
Objective-C
mapView.indoorEnabled = NO;
לחלופין, אפשר להשבית רק את אמצעי הבקרה של בורר הקומות.
הוספת תוכניות קומה
תוכניות הקומות זמינות במיקומים נבחרים. אם נתוני תוכנית הקומה לא זמינים לבניין שאתם רוצים להדגיש באפליקציה, אתם יכולים:
- להוסיף תוכניות קומה ישירות למפות Google. כך התוכניות יהיו זמינות לכל המשתמשים במפות Google.
- הצגת תוכנית קומה כשכבת-על של קרקע. כך רק המשתמשים באפליקציה יוכלו לראות את תוכניות הקומות.
שכבת התנועה
אתם יכולים לתת למשתמשים את האפשרות להציג את המפה עם מידע על צפיפות התנועה שמופיע מעל המפה. כך הם יכולים לקבל סיכום חזותי של מצב התנועה המקומי. אפשר להפעיל ולהשבית את שכבת התנועה באמצעות הקריאה ל-method trafficEnabled
. בדוגמה הבאה אפשר לראות איך שכבת התנועה עשויה להופיע במפה.
נגישות
כברירת מחדל, רכיבי הנגישות במפה מוסתרים. כדי להפעיל את הנגישות, מגדירים את הנכס accessibilityElementsHidden
של GMSMapView
לערך NO
. כך נוצרים רכיבי נגישות לאובייקטים של שכבת-על (כמו GMSMarker
וחלונות מידע, GMSPolyline
וכו').
Swift
mapView.accessibilityElementsHidden = false
Objective-C
mapView.accessibilityElementsHidden = NO;
הנכס הזה תואם לפרוטוקול הלא רשמי UIAccessibility
, מלבד הערך שמוגדר כברירת מחדל ב-SDK של מפות ל-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;