«نمای خیابان Google» نماهای ۳۶۰ درجه تمامنما از جادههای تعیینشده در سراسر منطقه تحت پوشش خود ارائه میدهد.
این ویدیو نشان میدهد چگونه میتوانید از سرویس «نمای خیابان» استفاده کنید تا تجربه دنیای واقعی را از نشانی روی نقشه به کاربران ارائه دهید و به آنها زمینهای معنادار درباره مقصدشان یا هر مکانی که به آن علاقهمند هستند ارائه دهید.
پوشش دردسترس ازطریق Google Maps Android API v2 با پوشش برنامه Google Maps در دستگاه Android یکسان است. میتوانید در درباره نمای خیابان مطالب بیشتری درباره «نمای خیابان» بخوانید و مناطق پشتیبانیشده را در نقشه تعاملی ببینید.
کلاس StreetViewPanorama تمامنمای «نمای خیابان» را در برنامه شما مدلسازی میکند. در میانجی کاربری شما، تمامنما با شیء
StreetViewPanoramaFragment یا
StreetViewPanoramaView نشان داده میشود.
نمونههای کد
مخزن ApiDemos در GitHub شامل نمونههایی است که استفاده از «نمای خیابان» را نشان میدهد.
نمونههای Kotlin:
- StreetViewPanoramaBasicDemoActivity: اصول اولیه استفاده از «نمای خیابان»
- StreetViewPanoramaEventsDemoActivity: درحال گوش دادن به رویدادها
- StreetViewPanoramaNavigationDemoActivity: کنترل تمامنماهای «نمای خیابان» بهصورت برنامهنویسیشده
- StreetViewPanoramaOptionsDemoActivity: تغییر واسط کاربر و گزینههای اشاره
- StreetViewPanoramaViewDemoActivity: استفاده از
StreetViewPanoramaView(بهجای «تکه») - SplitStreetViewPanoramaAndMapDemoActivity: استفاده از فعالیتی که نمای خیابان و نقشه را نمایش میدهد
نمونههای Java:
- StreetViewPanoramaBasicDemoActivity: اصول اولیه استفاده از «نمای خیابان»
- StreetViewPanoramaEventsDemoActivity: گوش دادن به رویدادها
- StreetViewPanoramaNavigationDemoActivity: کنترل کردن تمامنماهای «نمای خیابان» بهصورت برنامهنویسیشده
- StreetViewPanoramaOptionsDemoActivity: تغییر دادن گزینههای واسط کاربر و اشاره
- StreetViewPanoramaViewDemoActivity: استفاده از
StreetViewPanoramaView(بهجای Fragment) - SplitStreetViewPanoramaAndMapDemoActivity: ایجاد فعالیتی که نمای خیابان و نقشه را نمایش میدهد
نمای کلی «نمای خیابان» در کیت توسعه نرمافزار نقشه برای Android
کیت توسعه نرمافزار Maps برای Android سرویس «نمای خیابان» را برای دریافت و دستکاری تصاویر استفادهشده در «نمای خیابان Google» ارائه میدهد. تصاویر بهصورت تمامنما برگردانده میشوند.
هر تمامنمای «نمای خیابان» یک تصویر یا مجموعهای از تصاویر است که نمای کامل ۳۶۰ درجهای از یک مکان ارائه میدهد. تصاویر با بروجردی (Plate Carrée) مطابقت دارند، که شامل ۳۶۰ درجه نمای افقی (یک نمای کامل) و ۱۸۰ درجه نمای عمودی (از بالا تا پایین) است. تمامنمای ۳۶۰ درجه حاصل، تصویری را روی کره تعریف میکند که تصویر روی سطح دوبعدی آن کره پیچیده شده است.
StreetViewPanorama بینندهای ارائه میدهد که پانوراما را بهصورت کرهای با دوربین در مرکز آن رندر میکند. میتوانید StreetViewPanoramaCamera را دستکاری کنید تا بزرگنمایی و جهت (شیب و زاویه) دوربین را کنترل کنید.
شروع کنید
راهاندازی پروژه
راهنمای شروع به کار را برای راهاندازی پروژه کیت توسعه نرمافزار Maps برای Android دنبال کنید.
قبلاز افزودن تمامنما، دردسترس بودن تمامنمای «نمای خیابان» را بررسی کنید
کتابخانه مشتری کیت توسعه نرمافزار خدمات Google Play شامل چند نمونه «نمای خیابان» است که میتوانید آنها را به پروژهتان وارد کنید و بهعنوان مبنایی برای توسعه استفاده کنید. برای دستورالعملهای وارد کردن نمونهها، مقدمه را ببینید.
کتابخانه کاروریهای کیت توسعه نرمافزار Maps ویژه Android
کتابخانه متنباز کلاسهایی است که برای طیف وسیعی از
برنامهها مفید است. ابزار فراداده «نمای خیابان» در مخزن GitHub گنجانده شده است.
این ابزار بررسی میکند که آیا مکانی توسط «نمای خیابان» پشتیبانی میشود یا نه. با فراخواندن این ابزار فراداده و فقط افزودن پانورامای «نمای خیابان» درصورتیکه پاسخ OK باشد، میتوانید از بروز خطا هنگام افزودن پانورامای «نمای خیابان» به برنامه Android جلوگیری کنید.
استفاده از میانای برنامهسازی کاربردی
برای افزودن تمامنمای «نمای خیابان» به قطعه Android، دستورالعملهای زیر را دنبال کنید. این سادهترین راه برای افزودن «نمای خیابان» به برنامهتان است. سپس درباره قطعهها، نماها، و سفارشیسازی تمامنما بیشتر بخوانید.
افزودن تمامنمای «نمای خیابان»
برای افزودن تمامنمای «نمای خیابان» مثل این مورد، مراحل زیر را دنبال کنید:
بهطور خلاصه:
- یک شیء Fragment به
Activity اضافه کنید که
تمامنمای «نمای خیابان» را مدیریت خواهد کرد. سادهترین راه برای انجام این کار
افزودن عنصر
<fragment>به فایل چیدمان برایActivityاست. - واسط
OnStreetViewPanoramaReadyCallbackرا پیادهسازی کنید و ازonStreetViewPanoramaReady(StreetViewPanorama)روش برگشتی برای دریافت دستهای ازStreetViewPanoramaشیء استفاده کنید. - برای ثبت کردن تماس برگشتی، در این
تکه روی
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
حاوی گزینههای مشخصشدهتان پیکربندی کنید.
- اگر از
StreetViewPanoramaFragmentاستفاده میکنید، از روش کارخانه ثابتStreetViewPanoramaFragment.newInstance(StreetViewPanoramaOptions options)برای ساختن قطعه و گذراندن گزینههای پیکربندیشده سفارشیتان استفاده کنید. - اگر از
StreetViewPanoramaViewاستفاده میکنید، ازStreetViewPanoramaView(Context, 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() زمانبندی میکنید: