הגדרת מפה

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

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

Swift

mapView.isIndoorEnabled = false
      

Objective-C

mapView.indoorEnabled = NO;
      

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

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

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

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

שכבת התנועה

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

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

נגישות

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

Swift

mapView.accessibilityElementsHidden = false
      

Objective-C

mapView.accessibilityElementsHidden = NO;
      

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

אפשר להוסיף מרווח פנימי סביב שולי המפה באמצעות GMSMapViewpadding. המפה ממשיכה להתמלא כל המאגר, אבל טקסט ושליטה במיקום, בתנועות במפה ובמצלמה והתנועות שלהם פועלות כאילו הן מוצבות במרחב קטן יותר. התוצאה היא את השינויים הבאים:

  • תנועות מצלמה באמצעות קריאות 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;