Intents של מפות Google ל-Android

באפליקציית מפות Google ל-Android יש כמה כוונות שאפשר להשתמש בהן כדי להפעיל את מפות Google במצב תצוגה, חיפוש, ניווט או Street View. אם אתם רוצים להטמיע מפה באפליקציה, היעזרו במדריך לתחילת העבודה של מפות Google ל-Android API.

סקירה

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

  1. הצגת מפה במיקום ספציפי וברמת זום.
  2. מחפשים מיקומים או מקומות ומציגים אותם במפה.
  3. מבקשים מסלול ממיקום אחד למיקום אחר. אפשר להחזיר מסלולים לשלושה אמצעי תחבורה: נהיגה, הליכה ורכיבה על אופניים.
  4. הצגת תמונות פנורמה ב-Google Street View.

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

בקשות של Intent

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

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

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

Java

// Create a Uri from an intent string. Use the result to create an Intent.
Uri gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988");

// Create an Intent from gmmIntentUri. Set the action to ACTION_VIEW
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
// 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);

Kotlin

// Create a Uri from an intent string. Use the result to create an Intent.
val gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988")

// Create an Intent from gmmIntentUri. Set the action to ACTION_VIEW
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
// 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. אם התוצאה היא לא null, יש לפחות אפליקציה אחת שיכולה לטפל בכוונה, ואפשר לקרוא ל-startActivity() בבטחה. אם התוצאה היא null, לא כדאי להשתמש ב-Intent, ואם אפשר, להשבית את התכונה שמפעילה את הכוונה.

Java

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

Kotlin

mapIntent.resolveActivity(packageManager)?.let {
  ...
}

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

Java

Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
  startActivity(mapIntent);
}

Kotlin

val gmmIntentUri = Uri.parse("geo:37.7749,-122.4194")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
mapIntent.resolveActivity(packageManager)?.let {
  startActivity(mapIntent)
}

מחרוזות שאילתה המקודדות בכתובת URL

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

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

Java

Uri gmmIntentUri =
  Uri.parse("geo:37.7749,-122.4192?q=" + Uri.encode("1st & Pike, Seattle"));

Kotlin

val gmmIntentUri =
  Uri.parse("geo:37.7749,-122.4192?q=" + Uri.encode("1st & Pike, Seattle"))

הצגת מפה

יש להשתמש ב-Intent geo: כדי להציג מפה במיקום ובזום שצוינו.

geo:latitude,longitude?z=zoom

פרמטרים

  • latitude ו-longitude הגדירו את נקודת המרכז של המפה.
  • z מגדיר את רמת הזום הראשונית של המפה. הערכים הקבילים נעים בין 0 (בכל העולם) ל-21 (מבנים נפרדים). התקרה העליונה יכולה להשתנות בהתאם לנתוני המפה שזמינים במיקום שנבחר.

דוגמאות

Java

// Creates an Intent that will load a map of San Francisco
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

// Creates an Intent that will load a map of San Francisco
val gmmIntentUri = Uri.parse("geo:37.7749,-122.4194")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

חיפוש מיקום

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

geo:latitude,longitude?q=query
geo:0,0?q=my+street+address
geo:0,0?q=latitude,longitude(label)

פרמטרים

בנוסף לפרמטרים שמשמשים להצגת מפה, החיפוש תומך בפרמטרים הבאים:

  • q מגדיר את המקומות שברצונך להדגיש במפה. הפרמטר q נדרש לכל בקשות החיפוש. הוא מקבל מיקום בתור שם או כתובת של מקום. המחרוזת צריכה להיות בקידוד כתובת URL, ולכן צריך להמיר כתובת כמו "City Hall, New York, NY" ל-City+Hall,New+York,NY.

  • label מאפשרת להגדיר תווית מותאמת אישית במקום שמזוהה במפה. צריך לציין את label כמחרוזת.

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

Java

// Search for restaurants nearby
Uri gmmIntentUri = Uri.parse("geo:0,0?q=restaurants");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

// Search for restaurants in San Francisco
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?q=restaurants");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

// Search for restaurants nearby
val gmmIntentUri = Uri.parse("geo:0,0?q=restaurants")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

// Search for restaurants in San Francisco
val gmmIntentUri =
  Uri.parse("geo:37.7749,-122.4194?q=restaurants")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

חיפוש מסעדות בסן פרנסיסקו

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

Java

Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?z=10&q=restaurants");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

val gmmIntentUri =
  Uri.parse("geo:37.7749,-122.4194?z=10&q=restaurants")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

חיפוש של כתובת ספציפית יוביל להצגה של סיכה במיקום הזה.

Java

Uri gmmIntentUri = Uri.parse("geo:0,0?q=1600 Amphitheatre Parkway, Mountain+View, California");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

val gmmIntentUri =
  Uri.parse("geo:0,0?q=1600 Amphitheatre Parkway, Mountain+View, California")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

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

Java

// Searching for 'Main Street' will return too many results
Uri gmmIntentUri = Uri.parse("geo:0,0?q=101+main+street");

Kotlin

// Searching for 'Main Street' will return too many results
val gmmIntentUri = Uri.parse("geo:0,0?q=101+main+street")

הוספה של קו רוחב/lng ל-URI של Intent תגרום להטיית התוצאות לאזור מסוים:

Java

// Searches for 'Main Street' near San Francisco
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?q=101+main+street");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

// Searches for 'Main Street' near San Francisco
val gmmIntentUri =
  Uri.parse("geo:37.7749,-122.4194?q=101+main+street")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

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

Java

// Display a label at the location of Google's Sydney office
Uri gmmIntentUri = Uri.parse("geo:0,0?q=Google+Sydney@-33.8666,151.1957");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

// Display a label at the location of Google's Sydney office
val gmmIntentUri =
  Uri.parse("geo:0,0?q=-33.8666,151.1957(Google+Sydney)")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

כחלופה לכתובת, או לקו רוחב או לקו אורך, אפשר להציג סיכה במיקום ידוע באמצעות Plus Code.

Java

// Display the location of Google, San Francisco using a global plus code.
Uri gmmIntentUri = Uri.parse("http://plus.codes/849VQJQ5+XX");
// Equivalently, define the same location using a local plus code
gmmIntentUri = Uri.parse("https://plus.codes/QJQ5+XX,San%20Francisco");
// Construct and use the Intent as in the examples above

Kotlin

// Display the location of Google, San Francisco using a global plus code.
var gmmIntentUri = Uri.parse("http://plus.codes/849VQJQ5+XX")
// Equivalently, define the same location using a local plus code
gmmIntentUri = Uri.parse("https://plus.codes/QJQ5+XX,San%20Francisco")
// Construct and use the Intent as in the examples above

מתבצעת הפעלה של ניווט במסלול מפורט

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

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

פרמטרים

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

  • אמצעי התחבורה נקבע על ידי mode. Mode הוא אופציונלי, ואפשר להגדיר אותו לאחת מהאפשרויות הבאות:

    • d לנהיגה (ברירת מחדל)
    • b לרכיבה על אופניים
    • l לרכב דו-גלגלי
    • w להליכה
  • avoid מגדיר תכונות שהמסלול צריך להימנע מהן. האפשרות להימנע היא אופציונלית ואפשר להגדיר אותה לאחת או יותר מהאפשרויות הבאות:

    • t לכבישי אגרה
    • h לכבישים מהירים
    • f למעבורות

דוגמאות

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

Java

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

Kotlin

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

מסלול לגן החיות טארונגה

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

Java

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

Kotlin

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

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

Java

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

Kotlin

val gmmIntentUri =
  Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&mode=b")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

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

Java

Uri gmmIntentUri = Uri.parse("google.navigation:q=Connaught+Place,+New+Delhi,Delhi&mode=l");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

val gmmIntentUri =
  Uri.parse("google.navigation:q=Connaught+Place,+New+Delhi,Delhi&mode=l")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

הצגה של תמונת פנורמה ב-Street View

צריך להשתמש ב-Intent google.streetview כדי להפעיל את Google Street View. Google Street View מאפשר לצלם תמונות פנורמיות ממיקומים ייעודיים בכל אזור הכיסוי. גם תמונות פנורמיות ב-360° ואוספים מיוחדים של Street View זמינים גם הם.

google.streetview:cbll=latitude,longitude&cbp=0,bearing,0,zoom,tilt
google.streetview:panoid=id&cbp=0,bearing,0,zoom,tilt

פרמטרים

כל מזהי ה-URI של google.streetview חייבים לכלול את הפרמטר cbll או את הפרמטר panoid.

  • cbll מקבל קווי אורך ורוחב כערכים מופרדים בפסיקים (46.414382,10.013988). האפליקציה תציג את התמונה הפנורמית בצילום הקרוב ביותר למיקום הזה. מכיוון שהתמונות ב-Street View מרעננות מדי פעם, והתמונות עשויות להיות צולמו במיקומים שונים מעט בכל פעם, לכן ייתכן שהמיקום שלכם יופנה לפנורמה אחרת לאחר עדכון התמונות.

  • panoid הוא מזהה ספציפי של פנורמה. אפליקציית מפות Google תשתמש במזהה הפנורמה אם צוינו panoid וגם cbll. מזהי פנורמה זמינים לאפליקציה ל-Android מהאובייקט StreetViewPanoramaLocation.

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

    • bearing: מציין את כיוון המצפן של המצלמה במעלות מצפון בכיוון השעון. הצפון האמיתי הוא 0, המזרח הוא 90, הדרום הוא 180, המערב הוא 270. הערכים שיועברו לנשיאה יגלשו באותו הכיוון, כלומר 0°, 360° ו-720°. נושא ההגדרה הוא השני מתוך חמישה ערכים שמופרדים בפסיקים.
    • zoom: מגדיר את רמת הזום של המצלמה. רמת ברירת המחדל של מרחק התצוגה מוגדרת כ-0. זום של 1 יכפיל את ההגדלה. הזום מוצמד בין 0 לבין רמת הזום המקסימלית של הפנורמה הנוכחית. כלומר, כל ערך שחורג מהטווח הזה יוגדר בתור הקיצון הקרוב ביותר שנמצא בתוך הטווח. לדוגמה: הערך 1- יוגדר כ-0. מרחק התצוגה הוא הרביעי מתוך חמישה ערכים שמופרדים בפסיקים.
    • tilt: מציין את הזווית של המצלמה, למעלה או למטה. הטווח הוא בין -90 לבין 0 עד 90, כאשר 90 מסתכלים ישר למטה, 0 ממורכזים באופק ו-90 מסתכלים ישר למעלה.

דוגמאות

בהמשך מפורטות כמה דוגמאות לשימוש ב-Intent של Street View.

Java

// Displays an image of the Swiss Alps
Uri gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

// Uses a PanoID to show an image from Maroubra beach in Sydney, Australia
Uri gmmIntentUri = Uri.parse("google.streetview:panoid=Iaa2JyfIggYAAAQfCZU9KQ");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

// Opens Street View between two Pyramids in Giza. The values passed to the
// cbp parameter will angle the camera slightly up, and towards the east.
Uri gmmIntentUri = Uri.parse("google.streetview:cbll=29.9774614,31.1329645&cbp=0,30,0,0,-15");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

// Displays an image of the Swiss Alps
val gmmIntentUri =
  Uri.parse("google.streetview:cbll=46.414382,10.013988")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

// Uses a PanoID to show an image from Maroubra beach in Sydney, Australia
val gmmIntentUri =
  Uri.parse("google.streetview:panoid=Iaa2JyfIggYAAAQfCZU9KQ")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

// Opens Street View between two Pyramids in Giza. The values passed to the
// cbp parameter will angle the camera slightly up, and towards the east.
val gmmIntentUri =
  Uri.parse("google.streetview:cbll=29.9774614,31.1329645&cbp=0,30,0,0,-15")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

פירמידות ב-Street View