בסקירה הכללית הזו מוסבר איך להגדיר מפה שנוספה לאפליקציה ל-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 של מפות ל-iOS יש את סוגי המפות הבאים:
| סוג מפה | |
|---|---|
| רגיל | ערך:
kGMSTypeNormalמפת דרכים רגילה. מציגה כבישים, כמה מאפיינים מעשה ידי אדם ומאפיינים טבעיים חשובים כמו נהרות. אפשר לראות גם תוויות של כבישים ומאפיינים. אפשר להגדיר את ערכת הצבעים של המפה לכהה, לבהירה או לפי הגדרות המערכת.
|
| היברידי | ערך:
kGMSTypeHybridנתונים של צילומי לוויין עם מפות דרכים שנוספו. אפשר לראות גם תוויות של כבישים ומאפיינים. |
| לוויין | ערך:
kGMSTypeSatelliteנתונים של צילומי לוויין. תוויות של כבישים ותכונות לא מוצגות.
|
| פני השטח | ערך:
kGMSTypeTerrainנתונים טופוגרפיים. המפה כוללת צבעים, קווי מתאר ותוויות,
והצללה פרספקטיבית. אפשר לראות גם חלק מהכבישים והתוויות. תמיכה בהגדרת ערכת הצבעים של המפה לכהה, לבהירה או בהתאם להגדרות המערכת.
|
| ללא | ערך:
kGMSTypeNoneאין משבצות מפה. המשבצות של המפה הבסיסית לא יעובדו. המצב הזה שימושי בשילוב עם שכבות משבצות. הצגת נתוני התנועה מושבתת כשסוג המפה מוגדר כ-none. |
שינוי סוג המפה
כדי להגדיר את סוג המפה, מקצים ערך חדש למאפיין 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.
- הצגת תוכנית קומה כשכבת-על של קרקע. כך רק משתמשי האפליקציה יוכלו לראות את תוכניות הקומה.
שכבת התנועה
אתם יכולים לתת למשתמשים אפשרות להציג את המפה עם מידע על עומס התנועה שמוצג מעליה. כך הם יכולים לראות סיכום ויזואלי של מצב התנועה באזור שלהם. כדי להפעיל ולהשבית את שכבת התנועה, מפעילים את השיטה trafficEnabled. בדוגמה הבאה אפשר לראות איך שכבת התנועה עשויה להופיע במפה.

שכבת התחבורה הציבורית
באמצעות ה-method transitEnabled ב-SDK של מפות ל-iOS, אתם יכולים להציג במפה את רשת התחבורה הציבורית של עיר מסוימת. כששכבת התנועה מופעלת והמפה מתמקדת בעיר שיש בה מידע על תחבורה ציבורית, קווי התחבורה הציבורית הראשיים מוצגים במפה כקווים צבעוניים עבים. צבע הקו נקבע לפי מידע ממפעיל קו התחבורה הציבורית. הפעלת שכבת התחבורה הציבורית תשנה את הסגנון של המפה הבסיסית כדי להדגיש טוב יותר את מסלולי התחבורה הציבורית.
אם אתם מייצגים סוכנות ציבורית שמפקחת על התחבורה הציבורית בעיר שלכם, ואתם רוצים שהנתונים שלכם ייכללו, היכנסו לאתר של Google Transit Partner Program כדי לקבל מידע נוסף.
בדוגמה הבאה אפשר לראות איך שכבת התחבורה הציבורית עשויה להופיע במפה.

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