نمای خیابان

پلاتفرم را انتخاب کنید: 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 را دستکاری کنید تا بزرگ‌نمایی و جهت (شیب و زاویه) دوربین را کنترل کنید.

شروع کنید

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

راهنمای شروع به کار را برای راه‌اندازی پروژه کیت توسعه نرم‌افزار 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() برای تنظیم callback در قطعه استفاده کنید.

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 است. درست مثل StreetViewPanoramaFragment، StreetViewPanoramaView به‌عنوان محفظه‌ای برای تمام‌نما عمل می‌کند و ویژگی‌های اصلی را ازطریق شیء 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() زمان‌بندی می‌کنید:

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