نمای خیابان

پلاتفرم را انتخاب کنید: Android iOS JavaScript

«نمای خیابان Google» نماهای ۳۶۰ درجه تمام‌نما از جاده‌های تعیین‌شده در سراسر منطقه تحت پوشش خود ارائه می‌دهد.

این ویدیو نشان می‌دهد که چگونه می‌توانید از سرویس «نمای خیابان» استفاده کنید تا به کاربران خود تجربه‌ای واقعی از یک نشانی روی نقشه ارائه دهید و اطلاعات زمینه‌ای معناداری درباره مقصد یا هر مکان دیگری که به آن علاقه‌مند هستند، در اختیارشان بگذارید.

پوشش دردسترس ازطریق Google Maps Android API v2 همانند پوشش برنامه Google Maps در دستگاه Android شما است. می‌توانید در درباره نمای خیابان، اطلاعات بیشتری درباره «نمای خیابان» بخوانید و مناطق پشتیبانی‌شده را در نقشه تعاملی ببینید.

کلاس StreetViewPanorama تمام‌نمای «نمای خیابان» را در برنامه‌تان مدل‌سازی می‌کند. در میانجی کاربری شما، تمام‌نما با شیء StreetViewPanoramaFragment یا StreetViewPanoramaView نشان داده می‌شود.

نمونه‌های کد

مخزن ApiDemos در GitHub شامل نمونه‌هایی است که استفاده از «نمای خیابان» را نشان می‌دهد.

نمونه‌های Kotlin:

نمونه‌های Java:

نمای کلی «نمای خیابان» در کیت توسعه نرم‌افزار نقشه برای Android

کیت توسعه نرم‌افزار Maps برای Android سرویس «نمای خیابان» را برای دریافت و دستکاری تصاویر استفاده‌شده در «نمای خیابان Google» ارائه می‌دهد. تصاویر به‌صورت تمام‌نما برگردانده می‌شوند.

هر تمام‌نمای «نمای خیابان» یک تصویر یا مجموعه‌ای از تصاویر است که نمای کامل ۳۶۰ درجه‌ای از یک مکان ارائه می‌دهد. تصاویر با تصویرسازی استوانه‌ای هم‌فاصله (Plate Carrée) مطابقت دارند که شامل ۳۶۰ درجه نمای افقی (نمای کامل اطراف) و ۱۸۰ درجه نمای عمودی (از بالا به پایین) است. تمام‌نمای ۳۶۰ درجه حاصل، تصویری را روی کره تعریف می‌کند که تصویر روی سطح دوبعدی آن کره پیچیده شده است.

StreetViewPanorama نمایشگری ارائه می‌دهد که سراسرنما را به‌صورت کره‌ای با دوربینی در مرکز آن رندر می‌کند. می‌توانید StreetViewPanoramaCamera را دستکاری کنید تا بزرگ‌نمایی و جهت (کج کردن و زاویه) دوربین را کنترل کنید.

شروع کنید

راه‌اندازی پروژه

راهنمای شروع به کار را برای راه‌اندازی پروژه کیت توسعه نرم‌افزار Google Maps برای Android دنبال کنید.

پیش‌از افزودن تمام‌نما، دردسترس بودن تمام‌نمای «نمای خیابان» را بررسی کنید

کتابخانه مشتری کیت توسعه نرم‌افزار خدمات Google Play شامل چند نمونه «نمای خیابان» است که می‌توانید آن‌ها را به پروژه‌تان وارد کنید و به‌عنوان مبنایی برای توسعه استفاده کنید. برای دستورالعمل‌های وارد کردن نمونه‌ها، مقدمه را ببینید.

کتابخانه کاروری‌های کیت توسعه نرم‌افزار Maps ویژه Android کتابخانه متن‌باز کلاس‌هایی است که برای طیفی از برنامه‌ها مفید است. ابزار کمکی فراداده «نمای خیابان» در مخزن GitHub گنجانده شده است. این ابزار بررسی می‌کند که آیا مکانی توسط «نمای خیابان» پشتیبانی می‌شود یا نه. با فراخوانی این ابزار فراداده و افزودن تمام‌نمای «نمای خیابان» فقط درصورتی‌که پاسخ OK باشد، می‌توانید از بروز خطا هنگام افزودن تمام‌نمای «نمای خیابان» به برنامه Android جلوگیری کنید.

استفاده از میانای برنامه‌سازی کاربردی

برای افزودن تمام‌نمای «نمای خیابان» به قطعه Android، دستورالعمل‌های زیر را دنبال کنید. این ساده‌ترین راه برای افزودن «نمای خیابان» به برنامه‌تان است. سپس درباره تکه‌ها، نماها، و سفارشی‌سازی تمام‌نما بیشتر بخوانید.

افزودن تمام‌نمای «نمای خیابان»

برای افزودن تمام‌نمای «نمای خیابان» مثل این مورد، مراحل زیر را دنبال کنید:

نسخه نمایشی تمام‌نمای «نمای خیابان»

به‌طور خلاصه:

  1. شیء Fragment را به Activity اضافه کنید تا تمام‌نمای «نمای خیابان» را مدیریت کند. ساده‌ترین راه برای انجام این کار افزودن عنصر <fragment> به فایل چیدمان برای Activity است.
  2. میانای OnStreetViewPanoramaReadyCallback را پیاده‌سازی کنید و از روش فراخوانی بازگشتی onStreetViewPanoramaReady(StreetViewPanorama) برای دریافت دستگیره شیء StreetViewPanorama استفاده کنید.
  3. برای ثبت بازخوانی، getStreetViewPanoramaAsync() را در قطعه فراخوانی کنید.

در زیر جزئیات بیشتری درباره هر مرحله ارائه شده است.

افزودن قطعه

عنصر <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"/>

افزودن کد «نمای خیابان»

برای کار با تمام‌نمای «نمای خیابان» در داخل برنامه‌تان، باید میانای OnStreetViewPanoramaReadyCallback را پیاده‌سازی کنید و نمونه‌ای از فراخوانی برگشتی را روی شیء StreetViewPanoramaFragment یا StreetViewPanoramaView تنظیم کنید. این آموزش از StreetViewPanoramaFragment استفاده می‌کند، زیرا این ساده‌ترین راه برای افزودن «نمای خیابان» به برنامه شما است. اولین قدم پیاده‌سازی میانای بازخوانی است:

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)
    }
}

      

جاوا

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);
    }
}

      

در روش 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)
}

      

جاوا

@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() برای تنظیم فراخوانی برگشتی در قطعه استفاده کنید.

Kotlin

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

      

جاوا

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

      

از روش فراخوانی onStreetViewPanoramaReady(StreetViewPanorama) برای بازیابی نمونه غیرتهی StreetViewPanorama، آماده برای استفاده، استفاده کنید.

Kotlin

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

      

جاوا

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


      

اطلاعات بیشتر درباره پیکربندی وضعیت اولیه

برخلاف نقشه، پیکربندی وضعیت اولیه تمام‌نمای «نمای خیابان» ازطریق XML امکان‌پذیر نیست. بااین‌حال، می‌توانید سراسرنما را به‌صورت برنامه‌نویسی‌شده با ارسال شیء StreetViewPanoramaOptions حاوی گزینه‌های مشخص‌شده‌تان پیکربندی کنید.

Kotlin

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

      

جاوا

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

      

اطلاعات بیشتر درباره StreetViewPanoramaFragment

StreetViewPanoramaFragment زیرکلاسی از کلاس Android Fragment است و به شما امکان می‌دهد تمام‌نمای «نمای خیابان» را در قطعه Android قرار دهید. اشیاء StreetViewPanoramaFragment به‌عنوان نگهدارنده برای تمام‌نما عمل می‌کنند و دسترسی به شیء StreetViewPanorama را فراهم می‌کنند.

StreetViewPanoramaView

StreetViewPanoramaView، زیرکلاسی از کلاس View Android، به شما امکان می‌دهد تمام‌نمای «نمای خیابان» را در View Android قرار دهید. View نشان‌دهنده ناحیه مستطیلی صفحه است و واحد سازنده اصلی برای برنامه‌ها و ابزاره‌های Android است. StreetViewPanoramaView دقیقاً مثل StreetViewPanoramaFragment به‌عنوان محفظه‌ای برای تمام‌نما عمل می‌کند و ویژگی‌های اصلی را ازطریق شیء StreetViewPanorama نشان می‌دهد. کاربران این کلاس باید همه روش‌های چرخه حیات فعالیت، مانند onCreate()، onDestroy()، onResume()، و onPause()) را به روش‌های مربوطه در کلاس StreetViewPanoramaView بازارسال کنند.

سفارشی‌سازی ویژگی تحت کنترل کاربر

به‌طور پیش‌فرض، ویژگی‌های زیر هنگام مشاهده تمام‌نمای «نمای خیابان» برای کاربر دردسترس است: حرکت عرضی، بزرگ‌نمایی، و رفتن به تمام‌نماهای مجاور. می‌توانید اشاره‌های تحت کنترل کاربر را ازطریق روش‌های موجود در StreetViewPanorama فعال و غیرفعال کنید. وقتی اشاره غیرفعال باشد، تغییرات برنامه‌ای همچنان امکان‌پذیر است.

تنظیم مکان تمام‌نما

برای تنظیم مکان تمام‌نمای «نمای خیابان»، StreetViewPanorama.setPosition() را فراخوانی کنید و LatLng را ارسال کنید. همچنین می‌توانید radius و source را به‌عنوان پارامترهای اختیاری ارسال کنید.

اگر می‌خواهید منطقه‌ای را که «نمای خیابان» در آن به‌دنبال عکس تمام‌نمای منطبق می‌گردد گسترش دهید یا محدود کنید، شعاع مفید است. شعاع ۰ یعنی تمام‌نما باید دقیقاً به LatLng مشخص‌شده پیوند داده شود. شعاع پیش‌فرض ۵۰ متر است. اگر بیش‌از یک عکس تمام‌نما در منطقه منطبق وجود داشته باشد، API بهترین تطابق را برمی‌گرداند.

اگر می‌خواهید «نمای خیابان» را محدود کنید تا فقط تمام‌نماهای فضای باز را جستجو کند، منبع مفید است. به‌طور پیش‌فرض، تمام‌نماهای «نمای خیابان» می‌توانند داخل مکان‌هایی مثل موزه‌ها، ساختمان‌های عمومی، کافه‌ها، و کسب‌وکارها باشند. توجه داشته باشید که ممکن است برای مکان مشخص‌شده، تمام‌نمای فضای باز وجود نداشته باشد.

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)

      

جاوا

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)
}

      

جاوا

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

      

زوم‌پیش و زوم‌پس کردن

می‌توانید سطح بزرگ‌نمایی را به‌صورت برنامه‌نویسی‌شده با تنظیم StreetViewPanoramaCamera.zoom تغییر دهید. تنظیم بزرگ‌نمایی روی ۱٫۰ تصویر را با ضریب ۲ درشت‌نمایی می‌کند.

قطعه کد زیر از StreetViewPanoramaCamera.Builder() برای ساختن دوربین جدیدی با شیب و جهت دوربین موجود استفاده می‌کند، درحالی‌که بزرگ‌نمایی را پنجاه درصد افزایش می‌دهد.

Kotlin

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

      

جاوا

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

      

جهت دوربین (نقطه دید) را تنظیم کنید

می‌توانید جهت دوربین «نمای خیابان» را با تنظیم زاویه و شیب در StreetViewPanoramaCamera تعیین کنید.

بلبرینگ
جهتی که دوربین به آن اشاره می‌کند، برحسب درجه در جهت عقربه‌های ساعت از شمال واقعی، در اطراف مکان دوربین مشخص شده است. شمال واقعی ۰، شرق ۹۰، جنوب ۱۸۰، و غرب ۲۷۰ است.
کج کردن
کج شدن محور Y به بالا یا پایین. محدوده از ۹۰- تا ۰ تا ۹۰ است، که ۹۰- مستقیماً به پایین نگاه می‌کند، ۰ روی افق متمرکز است، و ۹۰ مستقیماً به بالا نگاه می‌کند. این واریانس از زاویه پیش‌فرض اولیه دوربین اندازه‌گیری می‌شود که اغلب (اما نه همیشه) افقی تخت است. برای مثال، تصویری که روی تپه گرفته شده است احتمالاً دارای زاویه پیش‌فرضی است که افقی نیست.

قطعه کد زیر از StreetViewPanoramaCamera.Builder() برای ساختن دوربین جدیدی با بزرگ‌نمایی و کج کردن دوربین موجود استفاده می‌کند، درحالی‌که جهت را ۳۰ درجه به‌سمت چپ تغییر می‌دهد.

Kotlin

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

      

جاوا

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

      

قطعه کد زیر دوربین را ۳۰ درجه به‌سمت بالا کج می‌کند.

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()

      

جاوا

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() را فراخوانی کنید. پویانمایی بین ویژگی‌های دوربین فعلی و ویژگی‌های دوربین جدید درون‌یابی می‌کند. اگر می‌خواهید مستقیماً بدون پویانمایی به دوربین بروید، می‌توانید مدت را روی ۰ تنظیم کنید.

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)

      

جاوا

// 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);

      

تصویر زیر نتیجه را زمانی نشان می‌دهد که پویانمایی بالا را برای اجرا در هر ۲۰۰۰ میلی‌ثانیه زمان‌بندی می‌کنید، بااستفاده از Handler.postDelayed():

نمونه پویانمایی تمام‌نمای «نمای خیابان»