
setMyLocationEnabled(true), ומגדירים מאזין עם setOnMyLocationChangeListener, כדי שהמפה תדווח על כל שינוי במיקום.הטקסט המלא של הדקות הראשונות בהרצאה «Google Maps - User Location» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אחרי שראינו איך אפשר להציג מיקומים ספציפיים על ידי Google Map Fragment אנחנו רוצים להציג על ה-Fragment את המיקום של המשתמש ובכדי להשיג את המיקום של המשתמש התשתית הזאת של Google Maps מאפשרת לנו להשיג את ה-Location של המשתמש מבלי שאנחנו שוב נצטרך להתעסק בעצמנו עם הפרוביידרים.
אז בואו נראה איך עושים את זה. הדבר הראשון שאנחנו צריכים כאשר אנחנו רוצים לקבל את מיקום המשתמש זה כמובן לבקש הרשאה כזאת. אז בואו ניגש ל-users permission ונבקש את access fine location.
ודבר ראשון אנחנו רוצים מיקום משתמש אנחנו חייבים permission לצורך כך. הדבר הבא שאנחנו רוצים זה לארגן את ה-UI פה כמו שצריך כי אנחנו כבר לא צריכים את הלחצנים האלה.
אז בואו ניפטר מהם ולמעשה אם יש לנו רק פרגמנט אחת שאנחנו רוצים בכל הממשק שזה בעצם מה שאנחנו רוצים אז אנחנו יכולים שהתגית הראשית בעצם תהיה הפרגמנט הזאת אז בואו ניפטר פה מהוריינטיישן ורטיקל ניקח את שתי ההגדרות האלה של ה-id וה-name נדביק אותם כאן ולמעשה נגדיר את התגית הזאת כתגית ריקה בלי שום דבר אחר שקיים כאן.
אז כל מה שיש לנו בתוך ה-Main Activity זה רק תגית Fragment שמציגה ממש כאן את כל המפה. ה-ID שלה זה ה-Fragment Map שאנחנו צריכים. אז כאמור אנחנו משנים את התרגיל הקודם ולכן אנחנו עוברים לכאן ל-Main Activity וב-Main Activity מה שאנחנו רוצים זה קודם כל את ה-Support Map Fragment ויש לנו אותה, אנחנו רוצים את ה-Google Map ויש לנו אותו,
הנה כאן אנחנו משיגים את הפרגמנט וכאן אנחנו אומרים שברגע שהמפה מוכנה אנחנו רוצים שיתבצע קריאה ל-on-map-ready. אין לנו פה את כל הלחצנים האלה, ניפטר מהם ויש לנו כאן את ה-show-location שתכף נטפל בה.
ומה שאנחנו רוצים לעשות ב-on-map-ready זה בעצם קודם כל לבקש את ה-permission מהמשתמש. אז יש לנו כאן בנוטפד הזה קוד שעבדנו איתו בעבר ויש לנו כאן בדיוק את האיף הזה עם רג'יסטר לוקיישן אפדייט שאנחנו צריכים בואו נעתיק אותו נדביק אותו פה כמובן שאנחנו צריכים לבנות את הפונקציה רג'יסטר לוקיישן אפדייט בואו נטפל
רק בפאקג'ים הדרושים מניפסט נגדיר אותו. הנה אנחנו רואים את ה-request code register שאנחנו גם צריכים, הוא אמור להיות פה למעלה, הנה הוא, נחזור בחזרה לפה ונשתמש גם ב-request code register בכדי לבצע את הרישום.
מה עוד אנחנו צריכים? Package Manager אנחנו צריכים, והנה הגדרנו אותו. אז חסכנו קצת כתיבה של קוד ופשוט עשינו copy-paste של דברים שעבדנו איתם בעבר.
אנחנו רוצים כעת את ה-registered location. בואו ניגש, נחפש את ה-registered location שהייתה כאן, נעתיק אותה, קופי, נחזור בחזרה, נדביק אותה פה, ואין לנו צורך בכל אלה, ניפטר מהם, ומה שאנחנו כן רוצים לעשות זה לבקש את מיקום
המשתמש על ידי ה-google map. גוגל מאפ שעבדנו איתו מקודם מאפשר לנו לקבל את מיקום המשתמש. איך עושים את זה? פונקציה ראשונה שאנחנו צריכים לקרוא לה זה set mylocation enabled true וזה אומר שאנחנו רוצים עכשיו לקבל דיווחים לגבי מיקום המשתמש.
הפונקציה השנייה שאנחנו צריכים זה פשוט להירשם לדיווחים האלה וזה על ידי set on mylocation change listener אנחנו אנחנו רוצים לתת לו את ה-dis, וזה בעצם אומר שאנחנו בעצמנו רוצים לקבל את המיקום.
בואו נלחץ על Alt-Enter, Make Main Activity Implement On My Location Changed Listener, מבצע אוקיי, ויש לנו כאן את הפונקציה הזאת, בואו נגדיר אותה ממש פה, שהמערכת הולכת לקרוא לה ברגע שיש שינוי במיקום ופשוט לתת לנו את המיקום.
אז אנחנו כאן יכולים להשיג את ה-latitude על ידי Location.get.latitude ואנחנו יכולים להשיג את ה-longitude על ידי Location.get.longitude ואנחנו עכשיו יכולים ליצור את האובייקט שיצרנו מקודם latlng.location.
הנה הוא פה, בואו ניצור אותו ממש בפונקציה הזאת. הדבר הבא שאנחנו רוצים, באמת אנחנו לא יכולים לקרוא לו Location אז בואו פשוט נקרא לו LAT LNG כי כבר יש לנו משתנה לוקיישן וכל מה שאנחנו רוצים זה פשוט להציג את זה במקום בפונקציה הזאת בואו נציג את זה כאן.
עכשיו מה שקורה ושברגע שאנחנו נציג את המיקום אז יש הבדל בין תצוגה עם זומינג לתצוגה בלי זומינג. עכשיו אנחנו רוצים להציג עם זום רק פעם אחת בהתחלה אבל ברגע שיש לנו כבר את התצוגה איפה היוזר נמצא והיוזר זז אנחנו לא רוצים יותר להציג עם זומינג מפני שאם היוזר יזוז ואנחנו נציג לו את המיקום
החדש שלו עם זומינג אז בעצם מה שיקרה זה שהתמונה תעלה כאילו לכדור הארץ ותרד למיקום החדש. כל פעם שהוא יזוז יתבצע זום-אאוט וזום-אין, זום-אאוט וזום-אין ואת זה אנחנו לא רוצים.
אנחנו רוצים רק בפעם הראשונה זומינג ולהתמקד