Google Street View, अपने कवरेज एरिया में मौजूद चुनिंदा सड़कों के 360-डिग्री पैनोरामिक व्यू उपलब्ध कराता है.
इस वीडियो में बताया गया है कि Street View सेवा का इस्तेमाल कैसे किया जा सकता है. इससे, उपयोगकर्ताओं को मैप पर किसी पते की असल दुनिया की जानकारी मिलती है. साथ ही, उन्हें उनकी मंज़िल या उनकी दिलचस्पी वाली किसी जगह के बारे में काम की जानकारी मिलती है.
Google Maps Android API v2 के ज़रिए उपलब्ध कवरेज, आपके Android डिवाइस पर Google Maps ऐप्लिकेशन के कवरेज जैसा ही है. Street View के बारे में ज़्यादा जानने और इंटरैक्टिव मैप पर उन इलाकों को देखने के लिए जहां यह सुविधा उपलब्ध है, Street View के बारे में जानकारी पर जाएं.
StreetViewPanorama क्लास, आपके ऐप्लिकेशन में Street View पैनोरामा को मॉडल करती है. आपके यूज़र इंटरफ़ेस (यूआई) में, पैनोरामा को StreetViewPanoramaFragment या StreetViewPanoramaView ऑब्जेक्ट से दिखाया जाता है.
कोड सैंपल
GitHub पर मौजूद ApiDemos रिपॉज़िटरी में, ऐसे सैंपल हैं जो Street View के इस्तेमाल के बारे में बताते हैं.
Kotlin के सैंपल:
- StreetViewPanoramaBasicDemoActivity: Street View इस्तेमाल करने के बुनियादी तरीके
- StreetViewPanoramaEventsDemoActivity: इवेंट सुनना
- StreetViewPanoramaNavigationDemoActivity: प्रोग्राम के हिसाब से Street View पैनोरमा को कंट्रोल करना
- StreetViewPanoramaOptionsDemoActivity: यूज़र इंटरफ़ेस (यूआई) और जेस्चर के विकल्पों को बदलना
- StreetViewPanoramaViewDemoActivity:
StreetViewPanoramaView(फ़्रैगमेंट के बजाय) का इस्तेमाल करना - SplitStreetViewPanoramaAndMapDemoActivity: ऐसी ऐक्टिविटी का इस्तेमाल करना जो Street View और मैप दिखाती है
Java के सैंपल:
- StreetViewPanoramaBasicDemoActivity: Street View इस्तेमाल करने के बुनियादी तरीके
- StreetViewPanoramaEventsDemoActivity: इवेंट सुनना
- StreetViewPanoramaNavigationDemoActivity: प्रोग्राम के हिसाब से Street View पैनोरमा को कंट्रोल करना
- StreetViewPanoramaOptionsDemoActivity: यूज़र इंटरफ़ेस (यूआई) और जेस्चर के विकल्पों को बदलना
- StreetViewPanoramaViewDemoActivity:
StreetViewPanoramaView(फ़्रैगमेंट के बजाय) का इस्तेमाल करना - SplitStreetViewPanoramaAndMapDemoActivity: स्ट्रीट व्यू और मैप दिखाने वाली गतिविधि बनाना
Android के लिए Maps SDK में Street View की खास जानकारी
Android के लिए Maps SDK टूल, Street View की सेवा उपलब्ध कराता है. इससे Google Street View में इस्तेमाल की गई तस्वीरों को हासिल किया जा सकता है और उनमें बदलाव किया जा सकता है. इमेज, पैनोरामा के तौर पर दिखती हैं.
हर Street View पैनोरमा एक इमेज या इमेज का सेट होता है. यह किसी एक जगह से 360-डिग्री व्यू दिखाता है. इमेज, इक्विरेक्टैंगुलर (प्लेट कैरी) प्रोजेक्शन के मुताबिक होती हैं. इसमें 360 डिग्री का हॉरिज़ॉन्टल व्यू (पूरी तरह से रैप-अराउंड) और 180 डिग्री का वर्टिकल व्यू (सीधे ऊपर से सीधे नीचे तक) शामिल होता है. नतीजे के तौर पर मिलने वाला 360-डिग्री पैनोरामा, किसी स्फ़ीयर पर प्रोजेक्शन को तय करता है. इसमें इमेज को उस स्फ़ीयर के टू-डाइमेंशन वाले सरफ़ेस पर रैप किया जाता है.
StreetViewPanorama एक व्यूअर उपलब्ध कराता है, जो पैनोरामा को एक गोले के तौर पर रेंडर करता है. इसके केंद्र में एक कैमरा होता है. StreetViewPanoramaCamera में बदलाव करके, कैमरे के ज़ूम और ओरिएंटेशन (झुकाव और बेयरिंग) को कंट्रोल किया जा सकता है.
अपनी प्रोफ़ाइल बनाना शुरू करें
कोई प्रोजेक्ट सेट अप करना
Maps SDK for Android प्रोजेक्ट सेट अप करने के लिए, शुरुआती निर्देश पढ़ें.
पैनोरमा जोड़ने से पहले, Street View पैनोरमा की उपलब्धता देखना
Google Play services SDK की क्लाइंट लाइब्रेरी में, Street View के कुछ सैंपल शामिल होते हैं. इन्हें अपने प्रोजेक्ट में इंपोर्ट किया जा सकता है और डेवलपमेंट के लिए इस्तेमाल किया जा सकता है. सैंपल इंपोर्ट करने के दिशा-निर्देशों के लिए, परिचय देखें.
Android के लिए Maps SDK की उपयोगिता लाइब्रेरी, क्लास की एक ओपन सोर्स लाइब्रेरी है. यह कई तरह के ऐप्लिकेशन के लिए काम की है. GitHub रिपॉज़िटरी में, Street View मेटाडेटा यूटिलिटी शामिल है.
यह यूटिलिटी जांच करती है कि किसी जगह के लिए Street View की सुविधा उपलब्ध है या नहीं. Android ऐप्लिकेशन में Street View पैनोरमा जोड़ते समय, गड़बड़ियों से बचा जा सकता है. इसके लिए, इस मेटाडेटा यूटिलिटी को कॉल करें और Street View पैनोरमा सिर्फ़ तब जोड़ें, जब जवाब OK हो.
एपीआई का इस्तेमाल करना
Android फ़्रैगमेंट में Street View पैनोरमा जोड़ने के लिए, यहां दिए गए निर्देशों का पालन करें. अपने ऐप्लिकेशन में Street View जोड़ने का यह सबसे आसान तरीका है. इसके बाद, फ़्रैगमेंट, व्यू, और पैनोरामा को पसंद के मुताबिक बनाने के बारे में ज़्यादा जानें.
Street View पैनोरमा जोड़ना
Street View पैनोरमा जोड़ने के लिए, यहां दिया गया तरीका अपनाएं. जैसे कि यह:
सारांश में:
- Activity में Fragment ऑब्जेक्ट जोड़ें, जो Street View पैनोरमा को हैंडल करेगा. ऐसा करने का सबसे आसान तरीका है कि
Activityके लिए लेआउट फ़ाइल में<fragment>एलिमेंट जोड़ें. OnStreetViewPanoramaReadyCallbackइंटरफ़ेस को लागू करें औरStreetViewPanoramaऑब्जेक्ट का हैंडल पाने के लिए,onStreetViewPanoramaReady(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"/>Street View कोड जोड़ना
अपने ऐप्लिकेशन में Street View पैनोरमा का इस्तेमाल करने के लिए, आपको OnStreetViewPanoramaReadyCallback इंटरफ़ेस लागू करना होगा. साथ ही, 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); } }
अपने Activity के onCreate() तरीके में, लेआउट फ़ाइल को कॉन्टेंट व्यू के तौर पर सेट करें. उदाहरण के लिए, अगर लेआउट फ़ाइल का नाम 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> एलिमेंट का रिसॉर्स आईडी पास करें.
ध्यान दें कि लेआउट फ़ाइल बनाते समय, Android प्रोजेक्ट में संसाधन आईडी R.id.streetviewpanorama अपने-आप जुड़ जाता है.
इसके बाद, फ़्रैगमेंट पर कॉलबैक सेट करने के लिए, getStreetViewPanoramaAsync() का इस्तेमाल करें.
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);
StreetViewPanorama का नॉन-नुल इंस्टेंस पाने के लिए, onStreetViewPanoramaReady(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 पैनोरमा की शुरुआती स्थिति को कॉन्फ़िगर नहीं किया जा सकता. हालांकि, पैनोरामा को प्रोग्राम के हिसाब से कॉन्फ़िगर किया जा सकता है. इसके लिए, आपको 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), )
Java
LatLng sanFrancisco = new LatLng(37.754130, -122.447129); StreetViewPanoramaView view = new StreetViewPanoramaView( this, new StreetViewPanoramaOptions().position(sanFrancisco));
StreetViewPanoramaFragment के बारे में ज़्यादा जानकारी
StreetViewPanoramaFragment, Android Fragment क्लास की सबक्लास है. इसकी मदद से, Android फ़्रैगमेंट में Street View पैनोरमा को जोड़ा जा सकता है.
StreetViewPanoramaFragment ऑब्जेक्ट, पैनोरामा के लिए कंटेनर के तौर पर काम करते हैं. साथ ही, StreetViewPanorama ऑब्जेक्ट का ऐक्सेस देते हैं.
StreetViewPanoramaView
StreetViewPanoramaView, Android View क्लास की एक सबक्लास है. इसकी मदद से, Android View में Street View पैनोरमा को जोड़ा जा सकता है. 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 मीटर होता है. अगर मैच होने वाली जगह में एक से ज़्यादा पैनोरामा हैं, तो एपीआई सबसे सही मैच दिखाएगा.
अगर आपको 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);
इसके अलावा, StreetViewPanorama.setPosition() को panoId पास करके, पैनोरामा आईडी के आधार पर जगह की जानकारी सेट की जा सकती है.
आस-पास के पैनोरामा का आईडी पाने के लिए, पहले 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 पर सेट करने से, इमेज दो गुना बड़ी हो जाएगी.
नीचे दिया गया स्निपेट, मौजूदा कैमरे के टिल्ट और बेयरिंग के साथ नया कैमरा बनाने के लिए, 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();
कैमरे का ओरिएंटेशन (पॉइंट ऑफ़ व्यू) सेट करना
StreetViewPanoramaCamera पर बेयरिंग और झुकाव सेट करके, Street View कैमरे का ओरिएंटेशन तय किया जा सकता है.
- बियरिंग
- कैमरे की दिशा, कैमरे के लोकस के आस-पास, ट्रू नॉर्थ से घड़ी की सुई की दिशा में डिग्री में बताई जाती है. ट्रू नॉर्थ 0, पूर्व 90, दक्षिण 180, और पश्चिम 270 है.
- टिल्ट
- Y-ऐक्सिस को ऊपर या नीचे की ओर झुकाना. इसकी रेंज -90 से 0 और 0 से 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() का इस्तेमाल किया गया है: