הגדרת מפה

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

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

סוגי מפות

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

בבורר שבהמשך מוצגת השוואה בין מפות שטח, מפות רגילות ומפות היברידיות של אותו מיקום:

מפות פנים

ברמות זום גבוהות, ב-Maps SDK ל-iOS יוצגו תוכניות קומות של מרחבים פנימיים כמו שדות תעופה, מרכזי קניות, חנויות קמעונאיות גדולות ותחנות תחבורה ציבורית. תוכניות קומות בתוך מבנים משולבות באריחי המפה שמוגדרים כברירת מחדל למפות מסוג 'רגיל' (kGMSTypeNormal). הן מופעלות באופן אוטומטי כשהמשתמש מגדיל את התצוגה, ומתבלבלות כשהתצוגה במפה קטנה יותר.

כדי להשבית את מפות הפנים, מגדירים את הנכס indoorEnabled של GMSMapView לערך NO.

Swift

mapView.isIndoorEnabled = false
      

Objective-C

mapView.indoorEnabled = NO;
      

לחלופין, אפשר להשבית רק את אמצעי הבקרה של בורר הקומות.

הוספת תוכניות קומה

תוכניות קומות זמינות במיקומים נבחרים. אם נתוני תוכנית הקומה לא זמינים לבניין שאתם רוצים להדגיש באפליקציה, תוכלו:

  • להוסיף תוכניות קומה ישירות למפות Google. כך התוכניות שלכם יהיו זמינות לכל המשתמשים במפות Google.
  • הצגת תוכנית קומה כשכבת-על. כך רק המשתמשים באפליקציה יוכלו לראות את תוכניות הקומות.

שכבת התנועה

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

מפה של Google עם שכבת התנועה

נגישות

כברירת מחדל, רכיבי הנגישות במפה מוסתרים. כדי להפעיל את הנגישות, מגדירים את הנכס accessibilityElementsHidden של GMSMapView לערך NO. כך נוצרים רכיבי נגישות לאובייקטים של שכבת-על (כמו GMSMarker וחלונות מידע, GMSPolyline וכו').

Swift

mapView.accessibilityElementsHidden = false
      

Objective-C

mapView.accessibilityElementsHidden = NO;
      

המאפיין הזה תואם לפרוטוקול הלא רשמי UIAccessibility, מלבד הערך שמוגדר כברירת מחדל ב-Maps 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;