Street View

בחירת פלטפורמה: Android iOS JavaScript

‫Google Street View מספק תצוגות פנורמיות של 360 מעלות מכבישים ייעודיים בכל היקף גיאוגרפי הכיסוי שלו.

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

הכיסוי שזמין דרך Google Maps Android API v2 זהה לכיסוי של אפליקציית מפות Google במכשיר Android. במאמר מידע על Street View תוכלו לקרוא מידע נוסף על Street View ולראות את האזורים הנתמכים במפה אינטראקטיבית.

הכיתה StreetViewPanorama יוצרת מודל של פנורמה ב-Street View באפליקציה. בממשק המשתמש, תמונה פנורמית מיוצגת על ידי אובייקט StreetViewPanoramaFragment או StreetViewPanoramaView.

דוגמאות קוד

המאגר ApiDemos ב-GitHub כולל דוגמאות שממחישות את השימוש ב-Street View.

דוגמאות ב-Kotlin:

דוגמאות ב-Java:

סקירה כללית של Street View ב-SDK של מפות ל-Android

ה-SDK של מפות ל-Android מספק שירות Street View לקבלת התמונות שמשמשות ב-Google Street View ולביצוע פעולות בהן. התמונות מוחזרות כתמונות פנורמיות.

כל פנורמה ב-Street View היא תמונה, או קבוצת תמונות, שמספקת תצוגה מלאה של 360 מעלות ממיקום אחד. התמונות תואמות להיטל שווה-זווית (Plate Carrée), שמכיל תצוגה אופקית של 360 מעלות (תצוגה מלאה מסביב) ותצוגה אנכית של 180 מעלות (מלמעלה עד למטה). התמונה הפנורמית ב-360 מעלות שנוצרת מגדירה היטל על כדור, כשהתמונה עוטפת את המשטח הדו-ממדי של הכדור.

‫StreetViewPanorama מספקת כלי לצפייה שמציג את הפנורמה ככדור עם מצלמה במרכז. אפשר לשנות את StreetViewPanoramaCamera כדי לשלוט בזום ובכיוון (הטיה וכיוון) של המצלמה.

שנתחיל?

הגדרת פרויקט

כדי להגדיר פרויקט של Maps SDK ל-Android, פועלים לפי המדריך לתחילת העבודה.

לפני שמוסיפים פנורמה, כדאי לבדוק אם יש פנורמה ב-Street View

ספריית הלקוח של Google Play Services SDK כוללת כמה דוגמאות של Street View שאפשר לייבא לפרויקט ולהשתמש בהן כבסיס לפיתוח. במבוא מוסבר איך לייבא את הדוגמאות.

‫SDK של מפות ל-Android Utility Library היא ספריית קוד פתוח של מחלקות שמועילות למגוון אפליקציות. המאגר ב-GitHub כולל את כלי המטא-נתונים של Street View. הכלי הזה בודק אם יש תמיכה במיקום מסוים ב-Street View. כדי להימנע משגיאות כשמוסיפים פנורמה ב-Street View לאפליקציה ל-Android, אפשר להפעיל את כלי המטא-נתונים הזה ולהוסיף פנורמה ב-Street View רק אם התגובה היא OK.

שימוש ב-API

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

הוספת פנורמה ב-Street View

כדי להוסיף תמונה פנורמית ב-Street View, כמו זו:

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

לסיכום:

  1. מוסיפים אובייקט Fragment ל-Activity שיטפל בתמונת הפנורמה ב-Street View. הדרך הכי קלה לעשות את זה היא להוסיף רכיב <fragment> לקובץ הפריסה של ה-Activity.
  2. מטמיעים את הממשק OnStreetViewPanoramaReadyCallback ומשתמשים בשיטת הקריאה החוזרת onStreetViewPanoramaReady(StreetViewPanorama) כדי לקבל נקודת אחיזה לאובייקט StreetViewPanorama.
  3. קוראים ל-getStreetViewPanoramaAsync() ב-fragment כדי לרשום את ה-callback.

בהמשך מופיע פירוט על כל שלב.

הוספת קטע

מוסיפים רכיב <fragment> לקובץ הפריסה של הפעילות כדי להגדיר אובייקט Fragment. ברכיב הזה, מגדירים את המאפיין class לערך com.google.android.gms.maps.StreetViewPanoramaFragment (או SupportStreetViewPanoramaFragment).

הנה דוגמה לקטע בקובץ פריסה:

<fragment
    android:name="com.google.android.gms.maps.StreetViewPanoramaFragment"
    android:id="@+id/streetviewpanorama"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

הוספת קוד Street View

כדי לעבוד עם פנורמה ב-Street View בתוך האפליקציה, צריך להטמיע את הממשק OnStreetViewPanoramaReadyCallback ולהגדיר מופע של הקריאה החוזרת (callback) באובייקט StreetViewPanoramaFragment או StreetViewPanoramaView. במדריך הזה משתמשים ב-StreetViewPanoramaFragment, כי זו הדרך הכי פשוטה להוסיף את Street View לאפליקציה. השלב הראשון הוא להטמיע את ממשק הקריאה החוזרת:

Kotlin

class StreetViewActivity :
    AppCompatActivity(),
    OnStreetViewPanoramaReadyCallback {
    // ...
    }

    private fun newView() {
        val sanFrancisco = LatLng(37.754130, -122.447129)
        val view = StreetViewPanoramaView(
            this,
            StreetViewPanoramaOptions().position(sanFrancisco),
        )
    }

    private fun setLocationOfThePanorama(streetViewPanorama: StreetViewPanorama) {
        val sanFrancisco = LatLng(37.754130, -122.447129)

        // Set position with LatLng only.
        streetViewPanorama.setPosition(sanFrancisco)

        // Set position with LatLng and radius.
        streetViewPanorama.setPosition(sanFrancisco, 20)

        // Set position with LatLng and source.
        streetViewPanorama.setPosition(sanFrancisco, StreetViewSource.OUTDOOR)

        // Set position with LaLng, radius and source.
        streetViewPanorama.setPosition(sanFrancisco, 20, StreetViewSource.OUTDOOR)

        streetViewPanorama.location.links.firstOrNull()?.let { link: StreetViewPanoramaLink ->
            streetViewPanorama.setPosition(link.panoId)
        }
    }

    private fun zoom(streetViewPanorama: StreetViewPanorama) {
        val zoomBy = 0.5f
        val camera = StreetViewPanoramaCamera.Builder()
            .zoom(streetViewPanorama.panoramaCamera.zoom + zoomBy)
            .tilt(streetViewPanorama.panoramaCamera.tilt)
            .bearing(streetViewPanorama.panoramaCamera.bearing)
            .build()
    }

    private fun pan(streetViewPanorama: StreetViewPanorama) {
        val panBy = 30f
        val camera = StreetViewPanoramaCamera.Builder()
            .zoom(streetViewPanorama.panoramaCamera.zoom)
            .tilt(streetViewPanorama.panoramaCamera.tilt)
            .bearing(streetViewPanorama.panoramaCamera.bearing - panBy)
            .build()
    }

    private fun tilt(streetViewPanorama: StreetViewPanorama) {
        var tilt = streetViewPanorama.panoramaCamera.tilt + 30
        tilt = if (tilt > 90) 90f else tilt
        val previous = streetViewPanorama.panoramaCamera
        val camera = StreetViewPanoramaCamera.Builder(previous)
            .tilt(tilt)
            .build()
    }

    private fun animate(streetViewPanorama: StreetViewPanorama) {
        // Keeping the zoom and tilt. Animate bearing by 60 degrees in 1000 milliseconds.
        val duration: Long = 1000
        val camera = StreetViewPanoramaCamera.Builder()
            .zoom(streetViewPanorama.panoramaCamera.zoom)
            .tilt(streetViewPanorama.panoramaCamera.tilt)
            .bearing(streetViewPanorama.panoramaCamera.bearing - 60)
            .build()
        streetViewPanorama.animateTo(camera, duration)
    }
}

      

Java

public class StreetViewActivity extends AppCompatActivity
        implements OnStreetViewPanoramaReadyCallback {
    // ...
    }


    private void newView() {
        LatLng sanFrancisco = new LatLng(37.754130, -122.447129);
        StreetViewPanoramaView view =
                new StreetViewPanoramaView(
                        this, new StreetViewPanoramaOptions().position(sanFrancisco));
    }

    private void setLocationOfThePanorama(StreetViewPanorama streetViewPanorama) {
        LatLng sanFrancisco = new LatLng(37.754130, -122.447129);

        // Set position with LatLng only.
        streetViewPanorama.setPosition(sanFrancisco);

        // Set position with LatLng and radius.
        streetViewPanorama.setPosition(sanFrancisco, 20);

        // Set position with LatLng and source.
        streetViewPanorama.setPosition(sanFrancisco, StreetViewSource.OUTDOOR);

        // Set position with LaLng, radius and source.
        streetViewPanorama.setPosition(sanFrancisco, 20, StreetViewSource.OUTDOOR);

        StreetViewPanoramaLocation location = streetViewPanorama.getLocation();
        if (location != null && location.links != null) {
            streetViewPanorama.setPosition(location.links[0].panoId);
        }
    }

    private void zoom(StreetViewPanorama streetViewPanorama) {
        float zoomBy = 0.5f;
        StreetViewPanoramaCamera camera =
                new StreetViewPanoramaCamera.Builder()
                        .zoom(streetViewPanorama.getPanoramaCamera().zoom + zoomBy)
                        .tilt(streetViewPanorama.getPanoramaCamera().tilt)
                        .bearing(streetViewPanorama.getPanoramaCamera().bearing)
                        .build();
    }

    private void pan(StreetViewPanorama streetViewPanorama) {
        float panBy = 30;
        StreetViewPanoramaCamera camera =
                new StreetViewPanoramaCamera.Builder()
                        .zoom(streetViewPanorama.getPanoramaCamera().zoom)
                        .tilt(streetViewPanorama.getPanoramaCamera().tilt)
                        .bearing(streetViewPanorama.getPanoramaCamera().bearing - panBy)
                        .build();
    }

    private void tilt(StreetViewPanorama streetViewPanorama) {
        float tilt = streetViewPanorama.getPanoramaCamera().tilt + 30;
        tilt = (tilt > 90) ? 90 : tilt;

        StreetViewPanoramaCamera previous = streetViewPanorama.getPanoramaCamera();

        StreetViewPanoramaCamera camera =
                new StreetViewPanoramaCamera.Builder(previous).tilt(tilt).build();
    }

    private void animate(StreetViewPanorama streetViewPanorama) {
        // Keeping the zoom and tilt. Animate bearing by 60 degrees in 1000 milliseconds.
        long duration = 1000;
        StreetViewPanoramaCamera camera =
                new StreetViewPanoramaCamera.Builder()
                        .zoom(streetViewPanorama.getPanoramaCamera().zoom)
                        .tilt(streetViewPanorama.getPanoramaCamera().tilt)
                        .bearing(streetViewPanorama.getPanoramaCamera().bearing - 60)
                        .build();
        streetViewPanorama.animateTo(camera, duration);
    }
}

      

ב-method‏ onCreate() של Activity, מגדירים את קובץ הפריסה בתור תצוגת התוכן. לדוגמה, אם שם קובץ הפריסה הוא main.xml, משתמשים בקוד הזה:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_street_view)
    val streetViewPanoramaFragment =
        supportFragmentManager
            .findFragmentById(R.id.street_view_panorama) as SupportStreetViewPanoramaFragment
    streetViewPanoramaFragment.getStreetViewPanoramaAsync(this)
}

      

Java

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_street_view);
    SupportStreetViewPanoramaFragment streetViewPanoramaFragment =
            (SupportStreetViewPanoramaFragment)
                    getSupportFragmentManager().findFragmentById(R.id.street_view_panorama);
    streetViewPanoramaFragment.getStreetViewPanoramaAsync(this);
}


      

כדי לקבל נקודת אחיזה לפרגמנט, קוראים ל-FragmentManager.findFragmentById() ומעבירים את מזהה המשאב של רכיב ה-<fragment>. שימו לב שמזהה המשאב R.id.streetviewpanorama נוסף באופן אוטומטי לפרויקט Android כשיוצרים את קובץ הפריסה.

ואז משתמשים ב-getStreetViewPanoramaAsync() כדי להגדיר את הקריאה החוזרת (callback) ב-fragment.

Kotlin

val streetViewPanoramaFragment =
    supportFragmentManager
        .findFragmentById(R.id.street_view_panorama) as SupportStreetViewPanoramaFragment
streetViewPanoramaFragment.getStreetViewPanoramaAsync(this)

      

Java

SupportStreetViewPanoramaFragment streetViewPanoramaFragment =
        (SupportStreetViewPanoramaFragment)
                getSupportFragmentManager().findFragmentById(R.id.street_view_panorama);
streetViewPanoramaFragment.getStreetViewPanoramaAsync(this);

      

משתמשים בשיטת הקריאה החוזרת (callback) onStreetViewPanoramaReady(StreetViewPanorama) כדי לאחזר מופע שאינו null של StreetViewPanorama, שמוכן לשימוש.

Kotlin

override fun onStreetViewPanoramaReady(streetViewPanorama: StreetViewPanorama) {
    val sanFrancisco = LatLng(37.754130, -122.447129)
    streetViewPanorama.setPosition(sanFrancisco)
}

      

Java

@Override
public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) {
    LatLng sanFrancisco = new LatLng(37.754130, -122.447129);
    streetViewPanorama.setPosition(sanFrancisco);
}


      

מידע נוסף על הגדרת המצב הראשוני

בניגוד למפה, אי אפשר להגדיר את המצב הראשוני של הפנורמה ב-Street View באמצעות XML. עם זאת, אפשר להגדיר את התצוגה הפנורמית באופן פרוגרמטי על ידי העברת אובייקט StreetViewPanoramaOptions שמכיל את האפשרויות שציינתם.

Kotlin

val sanFrancisco = LatLng(37.754130, -122.447129)
val view = StreetViewPanoramaView(
    this,
    StreetViewPanoramaOptions().position(sanFrancisco),
)

      

Java

LatLng sanFrancisco = new LatLng(37.754130, -122.447129);
StreetViewPanoramaView view =
        new StreetViewPanoramaView(
                this, new StreetViewPanoramaOptions().position(sanFrancisco));

      

מידע נוסף על StreetViewPanoramaFragment

‫StreetViewPanoramaFragment היא מחלקת משנה של המחלקה Android Fragment, והיא מאפשרת להציב פנורמה ב-Street View ב-Android fragment. אובייקטים מסוג StreetViewPanoramaFragment משמשים כקונטיינרים לתמונה הפנורמית ומספקים גישה לאובייקט StreetViewPanorama.

StreetViewPanoramaView

StreetViewPanoramaView, מחלקת משנה של המחלקה View ב-Android, מאפשרת להציב פנורמה ב-Street View ב-View של Android. View מייצג אזור מלבני במסך, והוא אבן בניין בסיסית לאפליקציות ל-Android ולווידג'טים. בדומה ל-StreetViewPanoramaFragment, ה-StreetViewPanoramaView משמש כמאגר לתצוגה הפנורמית, וחושף תכונות עיקריות דרך האובייקט StreetViewPanorama. משתמשים במחלקה הזו צריכים להעביר את כל השיטות של מחזור החיים של הפעילות, כמו onCreate(),‏ onDestroy(),‏ onResume() ו-onPause()), לשיטות התואמות במחלקה StreetViewPanoramaView.

התאמה אישית של התכונה שנשלטת על ידי המשתמש

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

הגדרת המיקום של הפנורמה

כדי להגדיר את המיקום של הפנורמה ב-Street View, מפעילים את StreetViewPanorama.setPosition() ומעבירים את LatLng. אפשר גם להעביר את radius ו-source כפרמטרים אופציונליים.

הרדיוס שימושי אם רוצים להרחיב או לצמצם את האזור שבו Street View יחפש פנורמה תואמת. רדיוס של 0 אומר שהתמונה הפנורמית חייבת להיות מקושרת בדיוק ל-LatLng שצוין. רדיוס ברירת המחדל הוא 50 מטרים. אם יש יותר מתמונה פנורמית אחת באזור התואם, ה-API יחזיר את ההתאמה הטובה ביותר.

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

Kotlin

val sanFrancisco = LatLng(37.754130, -122.447129)

// Set position with LatLng only.
streetViewPanorama.setPosition(sanFrancisco)

// Set position with LatLng and radius.
streetViewPanorama.setPosition(sanFrancisco, 20)

// Set position with LatLng and source.
streetViewPanorama.setPosition(sanFrancisco, StreetViewSource.OUTDOOR)

// Set position with LaLng, radius and source.
streetViewPanorama.setPosition(sanFrancisco, 20, StreetViewSource.OUTDOOR)

      

Java

LatLng sanFrancisco = new LatLng(37.754130, -122.447129);

// Set position with LatLng only.
streetViewPanorama.setPosition(sanFrancisco);

// Set position with LatLng and radius.
streetViewPanorama.setPosition(sanFrancisco, 20);

// Set position with LatLng and source.
streetViewPanorama.setPosition(sanFrancisco, StreetViewSource.OUTDOOR);

// Set position with LaLng, radius and source.
streetViewPanorama.setPosition(sanFrancisco, 20, StreetViewSource.OUTDOOR);

      

אפשר גם להגדיר את המיקום על סמך מזהה פנורמה, על ידי העברת panoId אל StreetViewPanorama.setPosition().

כדי לאחזר את מזהה הפנורמה של פנורמות סמוכות, קודם צריך להשתמש ב-getLocation() כדי לאחזר StreetViewPanoramaLocation. האובייקט הזה מכיל את המזהה של הפנורמה הנוכחית ומערך של אובייקטים מסוג StreetViewPanoramaLink, שכל אחד מהם מכיל את המזהה של פנורמה שמחוברת לפנורמה הנוכחית.

Kotlin

streetViewPanorama.location.links.firstOrNull()?.let { link: StreetViewPanoramaLink ->
    streetViewPanorama.setPosition(link.panoId)
}

      

Java

StreetViewPanoramaLocation location = streetViewPanorama.getLocation();
if (location != null && location.links != null) {
    streetViewPanorama.setPosition(location.links[0].panoId);
}

      

הגדלה והקטנה של התצוגה

אפשר לשנות את רמת הזום באופן פרוגרמטי על ידי הגדרת StreetViewPanoramaCamera.zoom. אם מגדירים את הזום ל-1.0, התמונה תוגדל פי 2.

קטע הקוד הבא משתמש ב-StreetViewPanoramaCamera.Builder() כדי ליצור מצלמה חדשה עם ההטיה והכיוון של המצלמה הקיימת, תוך הגדלת מרחק התצוגה ב-50%.

Kotlin

val zoomBy = 0.5f
val camera = StreetViewPanoramaCamera.Builder()
    .zoom(streetViewPanorama.panoramaCamera.zoom + zoomBy)
    .tilt(streetViewPanorama.panoramaCamera.tilt)
    .bearing(streetViewPanorama.panoramaCamera.bearing)
    .build()

      

Java

float zoomBy = 0.5f;
StreetViewPanoramaCamera camera =
        new StreetViewPanoramaCamera.Builder()
                .zoom(streetViewPanorama.getPanoramaCamera().zoom + zoomBy)
                .tilt(streetViewPanorama.getPanoramaCamera().tilt)
                .bearing(streetViewPanorama.getPanoramaCamera().bearing)
                .build();

      

הגדרת כיוון המצלמה (נקודת המבט)

כדי לקבוע את הכיוון של מצלמת Street View, מגדירים את הכיוון וההטיה ב-StreetViewPanoramaCamera.

כיוון
הכיוון שאליו המצלמה פונה, מצוין במעלות בכיוון השעון מהצפון האמיתי, סביב מיקום המצלמה. הצפון האמיתי הוא 0, המזרח הוא 90, הדרום הוא 180 והמערב הוא 270.
הטיה
הטיה למעלה או למטה בציר ה-Y. הטווח הוא בין ‎-90 ל-90, כאשר ‎-90 הוא מבט ישירות למטה, 0 הוא מבט ממורכז באופק ו-90 הוא מבט ישירות למעלה. השונות נמדדת מהזווית האנכית הראשונית שמוגדרת כברירת מחדל במצלמה, שהיא בדרך כלל (אבל לא תמיד) אופקית שטוחה. לדוגמה, לתמונה שצולמה על גבעה כנראה תהיה זווית ברירת מחדל שאינה אופקית.

קטע הקוד הבא משתמש ב-StreetViewPanoramaCamera.Builder() כדי ליצור מצלמה חדשה עם הזום וההטיה של המצלמה הקיימת, תוך שינוי הכיוון ב-30 מעלות שמאלה.

Kotlin

val panBy = 30f
val camera = StreetViewPanoramaCamera.Builder()
    .zoom(streetViewPanorama.panoramaCamera.zoom)
    .tilt(streetViewPanorama.panoramaCamera.tilt)
    .bearing(streetViewPanorama.panoramaCamera.bearing - panBy)
    .build()

      

Java

float panBy = 30;
StreetViewPanoramaCamera camera =
        new StreetViewPanoramaCamera.Builder()
                .zoom(streetViewPanorama.getPanoramaCamera().zoom)
                .tilt(streetViewPanorama.getPanoramaCamera().tilt)
                .bearing(streetViewPanorama.getPanoramaCamera().bearing - panBy)
                .build();

      

קטע הקוד הבא מטה את המצלמה כלפי מעלה ב-30 מעלות.

Kotlin

var tilt = streetViewPanorama.panoramaCamera.tilt + 30
tilt = if (tilt > 90) 90f else tilt
val previous = streetViewPanorama.panoramaCamera
val camera = StreetViewPanoramaCamera.Builder(previous)
    .tilt(tilt)
    .build()

      

Java

float tilt = streetViewPanorama.getPanoramaCamera().tilt + 30;
tilt = (tilt > 90) ? 90 : tilt;

StreetViewPanoramaCamera previous = streetViewPanorama.getPanoramaCamera();

StreetViewPanoramaCamera camera =
        new StreetViewPanoramaCamera.Builder(previous).tilt(tilt).build();

      

הנפשה של תנועות המצלמה

כדי להוסיף אנימציה לתנועות המצלמה, מפעילים את StreetViewPanorama.animateTo(). האנימציה מבצעת אינטרפולציה בין מאפייני המצלמה הנוכחיים לבין מאפייני המצלמה החדשים. אם רוצים לעבור ישירות למצלמה בלי אנימציה, אפשר להגדיר את משך הזמן ל-0.

Kotlin

// Keeping the zoom and tilt. Animate bearing by 60 degrees in 1000 milliseconds.
val duration: Long = 1000
val camera = StreetViewPanoramaCamera.Builder()
    .zoom(streetViewPanorama.panoramaCamera.zoom)
    .tilt(streetViewPanorama.panoramaCamera.tilt)
    .bearing(streetViewPanorama.panoramaCamera.bearing - 60)
    .build()
streetViewPanorama.animateTo(camera, duration)

      

Java

// Keeping the zoom and tilt. Animate bearing by 60 degrees in 1000 milliseconds.
long duration = 1000;
StreetViewPanoramaCamera camera =
        new StreetViewPanoramaCamera.Builder()
                .zoom(streetViewPanorama.getPanoramaCamera().zoom)
                .tilt(streetViewPanorama.getPanoramaCamera().tilt)
                .bearing(streetViewPanorama.getPanoramaCamera().bearing - 60)
                .build();
streetViewPanorama.animateTo(camera, duration);

      

בתמונה הבאה מוצגת התוצאה כשמתזמנים את האנימציה שלמעלה לפעול כל 2,000 אלפיות השנייה, באמצעות Handler.postDelayed():

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