Table of Contents
מסגרת MapKit של אפל מספקת מפתחי iOS עם פתרון חזק ו Native עבור הטמעת מפות אינטראקטיביות לתוך היישומים שלהם.מהצגת סטיות ועיכובים מותאם אישית לחישוב כיוונים וביצועים גיאוגרפיים, MapKit מאפשר לך לבנות חוויות מיקום-מודע שמרגישים נכון בבית על iPhone ו- iPad. מדריך זה הולך דרך כל מה שאתה צריך לדעת כדי לשלב MapKit, ביעילות, הגדרת, התאמה אישית, אופטימיזציה של משתמש, או תכונות מתקדמות, או אופטימיזציה.
מתחילים עם MapKit
Prerequisites and Project Setup
לפני שאתה יכול להציב מפה על המסך, אתה צריך להוסיף MapKit לפרויקט Xcode שלך.אם אתה בונה עם UIKit, פשוט לייבא את המסגרת בחלק העליון של בקר התצוגה שלך:0import MapKitigFLT 1 עבור פרויקטים SwiftUI, להוסיף את אותה הודעת יבוא לקובץ התצוגה שלך.
צעד קריטי הוא תצורה של היישום שלך של היישום שלך:0Info.plistearph 1 לבקש גישה למיקום. MapKit מסתמכ על שירותי מיקום עבור תכונות כגון הצגת המיקום הנוכחי של המשתמש ולספק כיוונים.הוספת אחד או שניהם של המפתחות הבאים עם תיאורים מתאימים:
- (ב) [15] ,9.10.17.17.17.17.17.17.17.17.17.17.17.17.17.17.17.17.17.17.17.17.
- (ב) [15] ,[[1924]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]], [[1924]]]]]], [[1924]]]]]]]]]]
אפל סוקרת את התיאורים האלה, אז להיות ברור וכנים לגבי האופן שבו אתה משתמש בנתונים של מיקום.תיאור מעורפל או מטעה יכול להוביל לדחייה.
בקשה ל- Location Permission
גם לאחר הוספת המפתחות, האפליקציה שלך חייבת לבקש רשות במשרה מלאה. השתמש ב-FLT:0CLLocationManagerFLT:1 לבקש אישור (CallFLT:0 או FLT:1 בהתבסס על הצרכים שלך.It's Best לבקש אישור רק לפני שהוא נדרש, לא בתבנית משותפת היא להתקשר עם המשתמש הראשון עם מענקים הקשורים ל- 3.F לאחר מתן אפשרות זו בלבד, לאחר שינוי מסוים, או לאחר הפעלה, לאחר הפעלה של מערכת ההפעלה.
הוספת MapKit ל- UIKit ו- SwiftUI
(ב) ב[[1924]], [[1924]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]], [[1924]] ב[[1924]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]] [[1924]]]]]], [[1924]]]]]]]], [[1924]], [[1924]]]], [[1924]]]]]]]], [[1924]]]]]], [[1924]]]]]] ב[[1924]]]], [[1924]]]]]]]], [[1924]]]]]]]]]] ב[[1924]]]]]]]] [[[[1924]] [[1924
הוספת תצוגה לאפליקציית שלך
המונחים: instantiation vs. Interface Builder
בונה Interface מציע פתרון מהיר לגרור ו-drop, אך יצירת תוכנה מעניקה לך שליטה טובה יותר על מסגרת המפה ותצורה ראשונית תצורה ראשונית .אם אתה יוצר את המפה בקוד, זכור להתקשר FLT:0addSubview ( :)BuilddsFLT:1 ולהגדיר מגבלות מתאימות או מסיכות אוטומטיות.
ללא קשר לשיטתו, בדרך כלל תקבע את המפה של ה-FLT:0 (הד'דגייט) ל-FLT:4 (עבור UIKit) או בתוך ה-FLT:2UIViewRepresentableFLT 3:.
מיפוי מסוג ומחוז
(ב) ויקרא י"א): "[ה]" (הופנה מהדף מדרש:2 [ב] ויקרא י"א]: [ה'] ויקרא י' (ב' ויקרא י"ד, כ"ד, כ"כ], ויקרא י"ד ,"ו' ויקרא י"ד , ויקרא י"ד, , , ויקרא י"ד , , ויקרא י"ד, ויקרא י"ד , , , ויקרא י"ד , ויקרא י"ד , ויקרא י"ד ויקרא י"ד ויקרא י"ד ויקרא י"ד ויקרא י"ד ויקרא י"ד ויקרא י"ד ויקרא י"ד ויקרא ויקרא ויקרא י"ד ויקרא י"ד ויקרא י"ד ויקרא י"ד ויקרא י"ד ויקרא י"ד , ויקרא י"ד).
כדי לקבוע את האזור הראשון, ליצור קונסולת:0 (MKCoordionregion Reconion: 1:1 עם קואורדינט מרכזי ואורך (latitude/longitude delta).
- מרכז: רוחב 40.7128, אורך טווח -74.0060
- Span: latitudeDelta 0.05, longitudeDelta 0.05 (ב-5-6 ק"מ).
הרחיקו את האזור לשינוי באמצעות ההרחבה (FLT:6) עבור מבוא למשתמש חלק יותר, להימנע מטווחים קטנים מדי, אשר מכריחים את המפה לטעון אריחים רבים; רמת גן החיות בינונית עומסת מהר יותר.
ניהול מיקום המשתמש
כדי להציג את ה- dot הכחול של המשתמש, להגדיר את המפה על מיקום המשתמש באופן אוטומטי מבקש רשות המיקום אם הוספת מפתחות Info.plist.You יכול גם לרכז את המפה על המיקום של המשתמש על ידי האזנה ל-FLT:0MKMapViewDelegateFLT:1 שיטה FLT:8 לא להיות זהיר כדי להתמקד מחדש אם המחבתות המשתמש; דפוס משותף הוא לספק שוב ושוב מיקום ".
לקבלת עדכונים מדויקים או רקע גבוהים יותר, לשלב MapKit עם FLT:0CLLocationManagerph:1 ישירות להאכיל לתאם את המפה. MapKit's מובנה שירות המיקום הוא מספיק עבור רוב המקרים השימוש וקוד הסימולציות.
להתאים את המפה עם אנטנות וOverlays
יצירת מוסכמות מכס
(ב) ויקרא י"א: ויקרא י"א: ויקרא י"א ויקרא י"א: ויקרא י"א): "וַיָּבְהִיא נָא נָא אִם עַל עַמֶּה עַמֶת עַל עַל עַל עַל עַמֶרְתָּתָּתָּתָּתְתָּבְתָּבְתָּבְתָּבְתָּבְתָּבְתּבְתּבְתּבְתּבְתּבְתּבְתּבְתּבְתּבְתּבְתּבְתּבְהָבְתּבְהִדְהָבְהַהִנָּבְהַהַהָבְהָבְהָבְתָּבְהָבְהַהַהַהָבְהַהַהִנָּבְתָּבְהָבְהַה
עבור שליטה מלאה, ליצור מחלקה שמתאימה לפרוטוקול:0MKANnotationearFLT:1.You יכול לאחסן נכסים נוספים (כמו מזהה או דירוג) ולהשתמש בהם כדי לבנות תצוגת אנטנות עשירה יותר. גישה זו היא יעילה במיוחד כאשר כל צומת צריך לחפש אחר או לשאת נתונים נוספים עבור שיחות.
עיצוב תצוגות Annotation
(ב) ב[[1924]], [[1924]]]], [[1924]]]], [[1924]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]]]]]]]]]] ו[[1924]]]], [[1924]]]], [[1924]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
ניתן להוסיף גם תצוגות של גישה משמאל/ימין (למשל תמונה של אגודל או לחצן פרטי) עבור כפתור מפורט, להגדיר FLT:14 ולטפל ב-FLT:15 דפוס זה מאפשר למשתמשים לקדוח לתוך יותר מידע על מיקום.
הוספת Overlays
[ה]התעלים [ה] [ה]] [ה]] [ה]] [ה]] [ה'] [ה']] [ה']]][ה']]]'[ה']'[ה']'[ה']'[ה']'[ה']'[ה']']'[ה']']'[ה'[ה']']'[ה'[ה']']'[ה'[ה']'[ה'[ה'[ה'[ה']'[ה'[ה']']'[ה'[ה'[ה'[ה']']']'[ה']']']'[ה'[ה'[ה'[ה']']']']'[ה'[ה'[ה']'[ה']']'[ה']']'[ה'[ה']']'[ה'[ה'[ה'[ה']'[ה']']']'[ה'[ה']'[ה'[
(ב) ויקרא י"א: "וַיָּבְהִיא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא הוּא
טיפ: אם יש לך הרבה מעליות, לשקול קיבוץ אותם לתוך משטח אחד מכסה שטח גדול ותבניות ציור באופן כנות.זה מקטין את מספר התוספים ומשפר את קצב המסגרת.
אינטראקציה בין משתמשים
יישום The Delegate
בקר התצוגה שלך (או רכז) חייב להתאים את ה-FLT:0MKMapViewDelegateveFLT:1 .
- (FLT:19) נקרא לאחר שהמשתמש מסיים את הלבלב או את גן החיות. השתמש בו כדי לטעון סטיות חדשות או לרענן נתונים לאזור הנראה לעין.
- (FLT:20) אש כאשר annotation הוא נצמד, אתה יכול לעדכן פאנל פרטי או יומן אשר המיקום נבחר.
- (ב) ,הצריך לספק השקפה של אנטנות, כפי שהוזכר לעיל.
- (ב) ,2 , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
אל תשכחו להסיר את הנציג ב-FLT:23 (UIKit) או כאשר הנוף נעלם כדי להימנע מקריאות יתומים.
תגובה לפאן, זום ובחירת אנטוטציה
MapKit מטפל במחבת ובמחווה של גן החיות כברירת מחדל, אתה יכול להגביל את רמות גן החיות על ידי הגדרת FLT:0 ,הפך ZOmRangeofFLT:1 (iOS 13+) כדי להגביל את גן החיות המקסימלי והמינימום של המפה.לדוגמה, מוצא מסעדה עשוי לרצות למנוע גניבות רחוק מדי.
כאשר משתמש בוחר annotation, הטלטלה מופיעה באופן אוטומטי אם נקבעת.ניתן לבצע גם אנימציה אישית: לדוגמה, זום לתוך ההערה שנבחרה בעת שימוש.שימוש ב-FLT:24 או FLT:25 עבור מעברים חלק. להיות מודע לא להילחם במחווה הנוכחית של המשתמש; רק לאחר בחירתו, לא במהלך גרור.
מבוסס על אירועים במפה
[ב] שילוב עם חיפוש או שינוי פעולה.לדוגמה, כמו מגילת המשתמש, אתה יכול לשאול שרת עבור נקודות עניין בתוך המלבן החדש גלוי לעין. השתמש ב-FLT:0MKMapRectFLT 1 שיטות (FLT:27) כדי להפיק את הקואורדינטות המסוימות.
תכונות מתקדמות
הגעה ל- MKDirections
(ב) ויקרא י"א) ויקרא י"א (בראשית כ"ד, כ"ד) , ויקרא י"א) ויקרא ויקרא י"ד, ב') ו'[[1924]], ב[[1924]] ו[[1924]]]]]], [[1924]]]]]]]] ו[[1924]]]]]], [[1924]]]]
(ב) ויקרא יא' (ב) ויקרא יא') ויקרא (בראשית כ"ד) , ויקרא י"ד): "וַיָּבְתָּבְתָּבְתָּבְתָּעָה אִם עַמְתָּבְתָּבְתָּבָרֶתְתְתְתְתָּבְתִּיִם אִם אִם הוּא" (בְתּבְתּבְתּבְתּבְתּבְתּבְתּבְתּבְתּבְתּבְתּבְתּבְתּבָרֶתּבְתּבְתּבְתּבָרֶבָרֶבְתּבְתּבָרֶבְתּבְתּבְתּבְתּבְתּבְתּבְתָּבְתּבְתּבְתּבָרֶתּבְתָּבְתָּבְתּב
ג'וניפר עם CLGeocoder
בעוד ש MapKit מטפל בגאו-קולינג (כתובת לקואורדינטות) דרך ה-FLT:0CLGeocoderFLT:1, היפוך לאחור (התאמת לכתובת) הוא שימושי באותה מידה.
ג'קלינג הפוכה מוגבל לשיעור על ידי אפל, ולכן להימנע מלקרא אותו על כל בחירה של אנטנות. Cache תוצאות מקומית (למשל, במילון הממוקד על ידי קואורדינטציה) לשימוש כבד, לשקול את Apple's FLT:0MapKit JSuaFLT:1 השרת לצד גיאוגרפיה או ספק צד שלישי.
שילוב MapKit עם מיקום ליבה לעדכונים בזמן אמת
(ב) ל[[1924]], [[1924]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]
עדכון הנכס הקואורדינט של האנטוטציה ישירות: FLT:32 MapKit מעדכן באופן אוטומטי את עמדת התצוגה.לסוב את ההערה המבוססת על קורס, להגדיר FLT:33 עבור אינדיקטור חלק, להקשיב ל-FLT:0locationmanager ( :דידלינג:) , לסובב את המפה בהתאם.
ביצועים ועיסוקים טובים
ניהול זיכרון עם מספר גדול של אנטנות
הוספת מאות סטיות ללא אופטימיזציה יכולה להאט את המפה ולגרום ללחץ זיכרון תמיד ליישם את ה-FLT:34 עם dequeuing (דומה לנוף בטבלה) שתמש בנוף של פיזור על ידי הצבת מתאים FLT:0reuseIdentratedFLT:1.
(ב) ב[[1924]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]] ו[[1924]], [[1924]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], [[1924]], [[1924]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], [[1924]]]]]], [[1924]]]], [[1924]]]]]], [[1924]]]]]] [[[[1924]]]]]]]] [[1924]]]]]]]] [[1924]]]]]]]] [[[[1924]]]]]], [[[[1924]]]]]] [[[[1924]]]]]]]]]] [[[[1924]]]]]]
אופטימיזציה Overlay Rendering
(ב) כל אחד מהם מקבל את התוספת שלו (אם יש לך הרבה מעליות קטנות (למשל, אריחים), מתמזגים אותם ל-FLT יחיד:0MKTileOverlaysFLT:1 או FLT:2MKGroundOverlays FLT 3 ).
כאשר המפה נעה, ניתן להחליף את ה-FLT החדש (ברמה מורכבת) לצורות מורכבות, לפשט את הגיאומטריה ברמות גן החיות הנמוכות.You canתאים את ה-FLT:0lineWidthalthalthalph1 ו-FLT:2alphaFLT:3 מבוסס דינמי על בסיס FLT:37 כדי לשמור פריך ללא משיכת יתר.
ניהול מפות והודעות
(הופנה מהדף האריח המפה של אפל, אשר כלולים עם חברות מפתח שלך.עם זאת, עליך לציית לשרתי Apple של אפל:0MapKit Usage GuidelinesFLT:1 לדוגמה, ייתכן שלא תוציא נתונים מפה לשימוש מחוץ למסגרת, ואתה חייב להציג הודעות (Apple does this by ברירת מחדל אם האפליקציה שלך משתמשת בסגנונות מותאמים אישית עם LT2Kit יש לך חשבון Apple.
(ב) למפות לא מקוון, MapKit אינה תומכת ב-Cching אריחי צ'ינג (כלומר, בהתחשב בכך ששימוש ב-FLT:0MapKit'sFLT:1) שנבנה על ידי אריח אריח (הוא מטמון כמה אריחים), אך עבור פונקציונליות לא מקוונת מובטחת, ייתכן שיהיה עליך להשתמש באלטרנטיבה כמו FLT:2MapboxFLT 3 או LT:4S OpenofFIRFIRFIRST: 7.
מסקנה
MapKit נותן למפתחי iOS קבוצה עשירה להפליא של כלים לבניית ממשקים ללא להסתמך על שירותים של צד שלישי.מ- pins בסיסיים ו-Overlays לכיוונים תוואי מלא והודעות בזמן אמת, המסגרת מכסה את רוב צרכי המיפוי.על ידי ביצוע השלבים ההתקנה, מינוף שיטות הציר, וליישם אופטימיזציה ביצועים כמו אשכולות, אתה יכול ליצור מפות מרגישות מהירות, תגובה עמוקה, משולבת עם הפונקציונליות שלך.
כדי להמשיך ללמוד, קרא ל-FLT:0 (המכונה:0) ל-Apple MapKit Documentation Documentation: 1 (הופנה מהדף FLT:2;2) ל-Fitre (FLT) 3) לצליל עמוק יותר לתוך מוסכמות ומכשולים, ה-FLT:4Raywender MapKit Reducts:5 מציעה תרגילים מעשיים עם משאבים אלה וטכניקות מכוסה כאן, אשר המוכנים היטב למפות אינטראקטיביות כדי להביא את ה-iwlichmetre הבא.