כוונות של מפות Google ל-Android Automotive

כתב ויתור

המוצר או התכונה האלה ישתנו והם לא כפופים להסכם רמת שירות (SLA) כלשהו, או מדיניות בנושא הוצאה משימוש. ההטמעה עשויה להשתנות בגרסאות עתידיות.

לדוגמה, תוכנה, קובצי נתונים ו/או קוד מקור הנלווים בתיעוד זה: מסופק "כפי שהוא" וללא אחריות מכל סוג שהוא, ו-Google מוותרת במפורש על כל וכל ההתחייבויות, בין אם מפורשות, משתמעות, סטטוטוריות או אחרות, כולל, בין היתר, אחריות בנוגע לסחירות, התאמה למטרה מסוימת ואי-הפרה של זכויות כלשהן. שקשורות למוצר הזה.


באמצעות Intents של Android Automotive, אפשר להפעיל ניווט במפות Google.

מידע נוסף זמין במאמר אובייקטים של Intent במפות Google ל-Android.

לקבלת מידע נוסף על הפעלת האפליקציה לכלי רכב שפועלים Android Auto או Android Automotive OS: Android למכוניות.

סקירה כללית

דף זה מתאר את הכוונות שבהן אפשר להשתמש עם מפות Google ל-Android כלי רכב. לתיעוד מפורט של מפתחי Android למפתחים:

בקשות של Intent

כדי להפעיל את מפות Google ל-Android Automotive מתוך כוונה, עליך יוצרים אובייקט Intent שמציין את הפעולה, ה-URI והחבילה שלו.

  • פעולה. כל הכוונות של מפות Google נקראות כפעולת צפייה, ACTION_VIEW

  • URI. הכוונות של מפות Google משתמשות במחרוזות מקודדות של URI שמציינות פעולה מסוימת, יחד עם נתונים מסוימים שבאמצעותם ניתן לבצע את הפעולה.

  • חבילה. התקשרות אל setPackage("com.google.android.apps.maps") מבטיחה שאפליקציית מפות Google ל-Android מטפלת ב-Intent. אם החבילה לא מוגדרת, המערכת קובעת אילו אפליקציות יוכלו לטפל ב-Intent. אם מספר עשויות להופיע, ייתכן שתישאלו באיזו אפליקציה תרצו להשתמש.

לאחר יצירת ה-Intent, אתם יכולים לבקש שהמערכת תפעיל את בכמה דרכים. אחת מהשיטות הנפוצות היא להעביר את ה-Intent אמצעי תשלום אחד ([startActivity()]). המערכת תפעיל את האפליקציה הנדרשת מפות Google, ולהתחיל את הפעילות המתאימה.

// Create a Uri from an intent string. Use the result to create an Intent.
Uri mapIntentUri =
Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
// Create an Intent from mapIntentUri. Set the action to ACTION_VIEW
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
// Make the Intent explicit by setting the Google Maps package
mapIntent.setPackage("com.google.android.apps.maps");
// Attempt to start an activity that can handle the Intent
startActivity(mapIntent);

אם המערכת לא מצליחה לזהות אפליקציה שיכולה להגיב ל-Intent, האפליקציה שלך עלולה לקרוס. לכן, קודם עליך לוודא שהבקשה המקבלת לפני שמציגים למשתמש את אחת מהכוונות האלה.

כדי לוודא שאפליקציה זמינה לקבלת הכוונה, צריך להתקשר [resolveActivity()] באובייקט [Intent]. אם התוצאה אינה אפס, יש לפחות אפליקציה אחת שיכולה לטפל בכוונה, ואפשר להתקשר אליה בבטחה [startActivity()] אם התוצאה היא אפס, לא כדאי להשתמש ב-Intent וגם אם אפשר, משביתים את התכונה שמפעילה את הכוונה.

if (mapIntent.resolveActivity(getPackageManager()) != null) {
...
}

לדוגמה, כדי להפעיל ניווט במסלול מפורט לגן החיות טרונגה בסידני, אפשר להשתמש בקוד הבא:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
}

מחרוזות שאילתה מקודדות ב-URI

כל המחרוזות שמועברות ל-Intents של מפות Google חייבות להיות מקודדות ב-URI. לדוגמה, המחרוזת "1st & Pike, Seattle" צריך להפוך ל1st%20%26%20Pike%2C%20Seattle. אפשר לקודד רווחים במחרוזת ב-%20 או להחליף אותם בסימן הפלוס (+).

אפשר להשתמש בשיטה android.net.Uri parse() כדי לקודד את המחרוזות. לדוגמה:

Uri mapIntentUri = Uri.parse("google.navigation:q=" + Uri.encode("1st & Pike, Seattle"));

הפעלת ניווט עם מסלול מפורט

השתמש בהכוונה הזו כדי להפעיל ניווט במפות Google עם מסלול מפורט אל אחת או יותר מהכתובות או הקואורדינטות שצוינו. הוראות הגעה תמיד ניתנות מהמיקום הנוכחי של המשתמש.

google.navigation:q=a+street+address
google.navigation:q=latitude,longitude
google.navigation:place=placename

פרמטרים

כדי להפעיל את הניווט, צריך להשתמש ב-place או ב-q עם waypoints (אופציונלי). כדי לסמן ציון דרך כתחנת טעינה, אפשר לעיין במאמר שליחת תוכנית נסיעה לרכב חשמלי למפות Google.

  • q מגדיר את נקודת הסיום של חיפושי ניווט. סוג הפריט יכול להיות קו רוחב/אורך או כתובת בפורמט שאילתה. אם זו מחרוזת שאילתה תחזיר יותר מתוצאה אחת, תיבחר התוצאה הראשונה.

  • place מגדיר את נקודת הקצה כ'בית' או 'עבודה'. צריך לציין את הבית לניווט אל בבית המשתמש ובעבודה כדי לנווט אל מקום העבודה של המשתמש.

  • ב-avoid מוגדרות תכונות שהמסלול צריך להימנע מהן. avoid הוא אופציונלי ו ניתן להגדיר לאחת או יותר מהאפשרויות הבאות:

    • t לכבישי אגרה
    • h לכבישים מהירים
    • f למעבורות
  • waypoints מציין מקום מתווך אחד או יותר שאליו ינתב מסלול היעד הסופי שצוין ב-q. ניתן לציין כמה ציוני דרך באמצעות הקו הניצב (|) כדי להפריד בין מקומות. לדוגמה, Berlin,Germany|Paris,France. אפשר להשתמש בכמה ציוני דרך שרוצים. נקודות העצירה יתווספו למסלול באותו סדר שבו הן נוספו שמפורטות בכתובת ה-URL. כל ציון דרך יכול להיות כתובת או מופרד בפסיקים קואורדינטות של קו רוחב/אורך; יכולות להיות לכם כתובות את הקואורדינטות באותה Intent. המחרוזות צריכות להיות מסומנות בתווי בריחה (escape) בכתובת URL, כל כך ציוני דרך כמו "ברלין,גרמניה|פריז,צרפת" צריך להמיר ל- Berlin%2CGermany%7CParis%2CFrance.

דוגמאות

ה-Intent הזה יבקש מסלול מפורט לגן החיות טארונגה, סידני אוסטרליה:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

אם אינך רוצה לשלם כבישי אגרה או לנסוע במעבורת, באפשרותך לבקש מסלול מנסה להימנע מהמצבים האלה:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

אם אתם מעדיפים לנווט אל הבית שלכם, השתמשו ב:

Uri mapIntentUri = Uri.parse("google.navigation:place=home");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

כדי להפעיל ניווט במסלול מפורט לשלוש הכתובות הבאות לפי הסדר, מעבירים את גן החיות טרונגה כיעד הסופי q, ואת Google סידני וסידני בית האופרה משמש כנקודת ציון:

  1. Google סידני

  2. בית האופרה של סידני

  3. גן החיות טרונגה, סידני אוסטרליה

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7CSydney+Opera+House");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

בדומה ל-q, ניתן לייצג כל אחת מציוני הדרך באמצעות פסיקים שמופרדים בפסיקים קו רוחב וקו אורך במקום כתובת. לדוגמה, כדי להפעיל את אותו ניווט בזמן העברת קו האורך של קו הרוחב של בית האופרה של סידני במקום זאת של הכתובת:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7C-33.856159,151.215256");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

שליחת תוכנית נסיעה ברכב חשמלי למפות Google

אפשר להשתמש ב-Intent לניווט עם מספר יעדים כדי לציין יעדים מסוימים בתור תחנות טעינה לרכב חשמלי (EV). את הכוונה הזו, שמרחיבה כוונת רכישה רב-כיוונית, עוזרת לנהגים לתחזק כמות מספקת של רכבים חשמליים טעינת הסוללה כדי להגיע ליעדים שלהם על ידי סנכרון המידע על תחנת הטעינה בין אפליקציות לתכנון נסיעה ברכב חשמלי לבין מפות Google.

לגבי עצירות לטעינה, כוונות נסיעה:

  • חייב להכיל שם ואורך ואורך
  • עשוי להכיל תפוקת כוח, לצורך חישוב זמן הטעינה

Google משתמשת בשם של תחנת הטעינה ובקו האורך וקו רוחב כדי למצוא טעינה תואמת מקום להצגת נתונים עשירים, כמו מחבר סוגים, סכומים כוללים, מהירויות וזמינות בזמן אמת, אמצעי תשלום נתמכים ומארחים מוקדי עניין (POI). לדוגמה, מסלול נסיעה בתוך בחניונים בחוץ עבור החלק האחרון של הניווט, שעות פתיחה דירוגים. כדי לוודא שתחנות הטעינה תואמות לנתונים של Google בצורה נכונה, צריך להשתמש ב-<brand name>, לדוגמה ChargePoint.

פרמטרים

היעד הסופי

כדי להגדיר תחנת טעינה כיעד הסופי:

  • q: חייב להכיל את ערך קו הרוחב של תחנת הטעינה.
  • q_type: המאפיין 1 מציין שהיעד הסופי הוא תחנת טעינה.
  • q_name: שם היעד הסופי. חובה אם הערך של q_type הוא 1.
  • q_power_output_kw: מספר כפול להספק החשמלי בתחנת הטעינה קילוואט. זה שינוי אופציונלי.

נקודות ציון

כשמדובר בנקודות דרך, כל הפרמטרים הם מערכים מקבילים שמופרדים באמצעות | באותו סדר של ציוני דרך, לא כולל יעד סופי. אי-התאמה במספר הרכיבים במערכים מקבילים נחשבת Intent שגוי.

כדי להוסיף ציון דרך אחד או יותר בתחנת טעינה, משתמשים בפרמטרים הבאים: וכולם הם אופציונליים. אם אחד מהיעדים מסומן כחיוב ואז שם ציון הדרך הופך לחובה עבור יעד זה.

  • waypoints: רשימת ציוני דרך כפי שמתואר בניווט המפורט בכוונה טובה. חייב להיות ערך של קו אורך וקו רוחב בשביל ציוני דרך בתחנות טעינה.

  • waypoint_types: סוגים לפי ציון הדרך המוגדרים כמספר. הערך 0 הוא כל עצירה (ערך ברירת המחדל) ו-1 היא תחנת הטעינה.

  • waypoint_names: שמות של ציוני דרך. השדה הזה הוא חובה לטעינה תחנות שונות.

  • waypoint_power_outputs_kw: מספרים כפולים לטעינה של תחנת הטעינה קילוואט. בתחנות טעינה, אפשר לציין ציון דרך ערך תפוקת כוח, המשמש כחלופה אם התחנה התואמת לא נמצא. אם השדה ריק, לא צוין ערך.

התנהגות חוויית המשתמש (UX)

עבור כוונות נסיעה עם יעדים מרובים, המסך של סקירת המסלול אבל הניווט לא מתחיל באופן אוטומטי.

כדי להציג Intent בפורמט תקין, במפות Google תוצג סקירה כללית של המסלול. במסך של הנסיעה. במסך הסקירה הכללית של המסלול יוצגו כל ציוני הדרך היעד הסופי מהכוונה, עם המלצות לטעינה הרלוונטי.

בכל ציון דרך או יעד סופי שמסומנים כתחנת טעינה, מפות Google יחפשו מקום תואם במסד הנתונים של Google.

אם נמצאה התאמה, אפליקציית מפות Google משתמשת בנתונים מחשבון Google כדי להציג את החיוב בממשק המשתמש (UI) ומספקת המלצה לטעינה תחנת טעינה. אם לא נמצאה התאמה, הנתונים שסופקו מתוך הכוונה של תחנת הטעינה (קו אורך וקו רוחב, שם ופלט מתח) תשמש להצגה של תחנת טעינה בממשק המשתמש ומספקת המלצה לטעינה תחנת טעינה.

דוגמאות

ניווט ליעד סופי דרך כמה תחנות טעינה

הכוונה הבאה מנווטת ליעד הסופי, Port Macquarie NSW, דרך שתי תחנות טעינה, ChargePoint ו-Evie.

היעדים לפי הסדר:

  1. תחנת טעינה של ChargePoint (מיקום: -32.9599188,151.6240806, חשמל פלט: 6.6kw)

  2. תחנת טעינה Evie (מיקום: -31.9432539,152.4699808, פלט חשמל: 350KW)

  3. פורט מקווארי, ניו סאות' ויילס

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=Port+Macquarie+NSW"
            + "&waypoints=-32.9599188%2C151.6240806%7C-31.9432539%2C152.4699808"
            + "&waypoint_types=1%7C1"
            + "&waypoint_names=ChargePoint+Charging+Station%7CEvie+Charging+Station"
            + "&waypoint_power_outputs_kw=6.6%7C350");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

תפוקת כוח לא ידועה

אם ערך תפוקת החשמל לא ידוע, עליך להשאיר את החריץ הרלוונטי של השדה waypoint_power_outputs_kw ריק. לחלופין, אם כל המשבצות ריקות, אין צורך כדי לציין את הפרמטר waypoint_power_outputs_kw.

היעדים לפי הסדר:

  1. תחנת טעינה של ChargePoint (מיקום: -32.9599188,151.6240806, תפוקת כוח: לא ידוע)

  2. פורט מקווארי, ניו סאות' ויילס

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=Port+Macquarie+NSW"
            + "&waypoints=-32.9599188%2C151.6240806"
            + "&waypoint_types=1"
            + "&waypoint_names=ChargePoint+Charging+Station");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

סימון היעד הסופי כתחנת טעינה

כדי לסמן את היעד הסופי כתחנת טעינה, צריך לציין q_type, q_name ו-q_power_output_kw.

היעדים לפי הסדר:

  1. גן החיות טרונגה, סידני אוסטרליה

  2. תחנת טעינה של ChargePoint (מיקום: -32.9599188,151.6240806, תפוקת כוח: לא ידוע)

  3. תחנת טעינה Evie (מיקום: -31.9432539,152.4699808, פלט כוח: 350kw)

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=-31.9432539,152.4699808&q_type=1&q_name=Evie+Charging+Station&q_power_output_kw=350"
            + "&waypoints=Taronga+Zoo%2C+Sydney+Australia%7C-32.9599188%2C151.6240806"
            + "&waypoint_types=0%7C1"
            + "&waypoint_names=%7CChargePoint+Charging+Station"
            + "&waypoint_power_outputs_kw=%7C");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);