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