הגדרת מפה

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

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

באמצעות ה-Selecter למטה תוכלו לראות השוואה של פני השטח, מפות רגילות ומפות היברידיות באותו מיקום:

מפות פנים

עם מרחק גבוה, ה-SDK של מפות Google ל-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 של מפות 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, מופיע בחלק התחתון של המפה.

אפשר להוסיף מרווח פנימי סביב שולי המפה באמצעות 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;