
com.google.android.geo.API_KEY והערך של המפתח שהושג בהרצאה הקודמת.getSupportFragmentManager().findFragmentById.הטקסט המלא של הדקות הראשונות בהרצאה «Google Maps - Specific Locations» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אחרי שהשגנו את Google API Key אנחנו יכולים לגשת ולבנות את האפליקציה. אנחנו רוצים באפליקציה הזאת קודם כל להציג מיקומים ספציפיים ורק באפליקציה הבאה נציג את מיקום המשתמש המדויק.
אז דבר ראשון מה שאנחנו צריכים זה Dependency לגוגל Maps. אז בואו ניגש ל-Dependencies, נלך ל-App, Dependencies, פלוס ל-Library Dependency וכאן אנחנו צריכים לאתר את play services maps של גוגל בואו נבצע אוקיי אוקיי והפרויקט מבצע
בילדינג עם הדיפנדנסי הזה ולאחר שהוא סיים אנחנו צריכים לגשת למניפסט ובמניפסט אנחנו צריכים להגדיר את ה-google api key הדבר הזה מתבצע בתוך תגית אפליקיישן וזה מתבצע בתגית שנקראת מטה דאטה ובואו נפתח פה תגית מטה דאטה ובתגית מטה דאטה אנחנו צריכים לתת name והname שאנחנו צריכים לתת זה הname הבא com.google.android.geo.api.underline
באותיות גדולות. המאפיין הבא שאנחנו צריכים לתת זה ה-value, וה-value צריך להיות בדיוק ה-api-key שהשגנו בסרטון הקודם, ושמרתי אותו כאן ב-NotePad.
בואו נעתיק את זה, קונטרול סי, נדביק, נצמצם פה את התגית וגוגל API מסתכלים בדיוק על המטא דאטה הזאת, מחפשים שבאמת יש לנו את ה-API Key שהשגנו מהאתר שהיינו בו בסרטון הקודם.
Good, סיימנו להגדיר את המנהלות האלה ואנחנו יכולים לגשת ולבנות את הממשק משתמש. מה שאנחנו רוצים לעשות זה שלושה לחצנים שכל אחד יציג מקום ספציפי אחר וכאן באזור הפנוי את הגוגל מאפ על ידי הפרגמנט המיוחדת שגוגל API נותנים לנו.
אז בכדי להציג שלושה לחצנים בצורה אופקית בואו נוסיף פה ליניאר לייאאוט, נגדיר אותו כ-match parent ו-wrap content, נגדיר לו gravity center horizontal ויש לנו פה שלושה לחצנים.
ללחצן ראשון אנחנו רוצים with 0dp, height אנחנו רוצים wrap-content ואנחנו רוצים שיהיה לו weight, בגלל זה שמנו לו 0dp של 1. כל הלחצנים יתפסו weight של 1. הדבר הבא שאנחנו רוצים לבצע, קודם כל אני רואה שכאן למעלה אנחנו צריכים orientation vertical ואנחנו רוצים לתת לו עוד כמה הגדרות, טקסט סייז, בואו ניתן לו 20. טקסט אול קאפס,
בואו ניתן לו פולס. טקסט ג'רוזלם, בירת ישראל כמובן. און קליק, באטן ג'רוזלם, אנדרליין, און קליק. ויש לנו כבר את הלחצן הראשון, בואו נשכפל את הלחצן הזה.
לחצן שני יהיה תל אביב. כאן יש לנו את הבטן תל אביב ולחצן שלישי חיפה והנה יש לנו עכשיו שלוש ערים מאוד יפות בישראל.
עכשיו אנחנו יכולים לגשת ולבנות פה למטה את הפרגמנט. אז אנחנו לוקחים פרגמנט סטטית, נותנים לה match parent, match parent ואנחנו צריכים לתת id ובואו ניתן לה את ID fragment map ואנחנו צריכים כמובן לתת name.
ה-name צריך להיות com.google.android.gms.maps.supportmap. fragment. זאת בעצם המפה או ה-fragment המיוחדת שיש ל-Google API בכדי להציג את גוגל מפס בואו נעשה פה איזה רפרש כזה ועד היום לא מצאתי איזשהו layout שאנחנו יכולים להציג כאן יכול להיות שיש ואני עדיין לא ראיתי
יכול להיות שהתווסף בשלב יותר מאוחר מתישהו כרגע אין איזשהו layout מיוחד שאנחנו יכולים להציג אז יש לנו פה רק ID ו-Name. אז כרגע סיימנו לעצב את ה-UI ואנחנו יכולים להגיע לקוד.
מה אנחנו רוצים לעשות בקוד? הדבר הראשון שאנחנו רוצים זה להשיג את ה-Fragment. אז בואו ניגש ל-Main Activity. בואו ניגש פה לאזור הגלובלי, יש לנו פרייבט וה-Fragment שלנו היא מטיפוס Support Map Fragment וקראתי לה Fragment Map.
אנחנו רוצים לאתר אותה. כאן ב-on-create אז fragment map שווה casting ל-support map fragment ואנחנו רוצים להשתמש ב-get support fragment manager נקודה find fragment by id בדיוק כמו שלמדנו בנושא הפרגמנט ואנחנו רוצים לחפש את r.id.fragmentmap אז הנה יש לנו עכשיו השגה של הפרגמנט.
כעת מה שאנחנו צריכים זה משתנה גלובלי כאן מסוג Google Map ששייך ל-API של Google Maps, בואו נקרא לו Google Map, ואנחנו רוצים לבנות אובייקט ממנו.
אז למעשה אנחנו לא בונים אובייקט ממנו בעצמנו, אלא אנחנו מקבלים מהמערכת אובייקט מוכן של Google Map, כאשר המפה מוכנה לשימוש.
איך אנחנו יודעים מתי המפה מוכנה לשימוש ואיך אנחנו מקבלים את האובייקט הזה? אנחנו פונים ל-Fragment Map שלנו, לפונקציה שנקראת Get Map Async, ונותנים לאובייקט בשביל לממש אינטרפייס מיוחד.
אנחנו ניתן לה את this, נלחץ פה Alt Enter, ונממש את האינטרפייס OnMapReadyCodec. בואו נממש אותו, ואנחנו רואים אותו פה למעלה, וכאשר המפה מוכנה לשימוש אחרי שהיא הותחלה בכל הפרמטרים הדרושים, הפונקציה הזאת מתבצעת, והנה אנחנו מקבלים את אובייקט ה-Google Maps.
אנחנו יכולים פשוט לבצע this.googlemap שווה לאובייקט שהתקבל לפונקציה Google Map, וברגע שהמפה מוכנה לשימוש, הנה יש לנו כבר את האובייקט מוכן. כל מה שאנחנו צריכים לעשות עכשיו זה לגשת ללחצנים, ופשוט להירשם לאירועי הקליק שלהם על ידי Alt-Enter.
הנה הקליק הראשון של ג'רוזלם, הנה הקליק השני של תל אביב, הנה הקליק של חיפה. בגלל שאנחנו רוצים קוד דומה בכל אחד מהם, בואו נבנה פונקציה שתבצע את הקוד הכללי, וכל לחצן ישלח רק את המיקום הדרוש להצגה.
אז הפונקציה שאנחנו רוצים לבנות, תקרא showLocation היא תקבל latitude היא תקבל longitude והיא פשוט תציג את המיקום שהיא קיבלה על המפה.
הדבר הראשון שכדאי לבצע זה לבדוק האם ה-google map הזה שווה ל-null כי יכול להיות שלוחצים על הכפתור לפני שהמפה הצליחה להיות מהותכלת. אם google map שווה ל-null אז אין לנו מה לעשות ופשוט נצא לגמרי מהפונקציה showLocation אם גוגל מאפ לא שווה ל-Null אנחנו יכולים לגשת ולהציג את ה-Latitude ואת ה-Longitude
שקיבלנו. טכניקה אחרת יכולה להיות