הגדרת מפה

בחירת פלטפורמה: 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 בקצה התחתון של המפה.

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