הגדרת מפה

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

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

שינוי סוג המפה

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

מפה של 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;