הגדרת מפה

בחירת פלטפורמה: Android iOS

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

שכבת התנועה

אתם יכולים לתת למשתמשים אפשרות להציג את המפה עם מידע על עומס התנועה שמוצג מעליה. כך הם יכולים לראות סיכום ויזואלי של מצב התנועה באזור שלהם. כדי להפעיל ולהשבית את שכבת התנועה, מפעילים את השיטה trafficEnabled. בדוגמה הבאה אפשר לראות איך שכבת התנועה עשויה להופיע במפה.

מפת Google שבה מוצגת שכבת התנועה

שכבת התחבורה הציבורית

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

אם אתם נציגים של סוכנות ציבורית שמפקחת על התחבורה הציבורית בעיר שלכם ורוצים שהנתונים שלכם ייכללו, אתם יכולים להיכנס לאתר של תוכנית השותפים של Google Transit כדי לקבל מידע נוסף.

בדוגמה הבאה אפשר לראות איך שכבת התחבורה הציבורית עשויה להופיע במפה.

מפת Google שבה מוצג שכבת המידע של התחבורה הציבורית

נגישות

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

כדי ליצור סגנונות בהירים וכהים בהתאמה אישית למפות, משתמשים בעיצוב מפות מבוסס-ענן.