स्ट्रीट व्यू

प्लैटफ़ॉर्म चुनें: Android iOS JavaScript

Google Street View तय की गई सड़कों से पैनोरामा 360-डिग्री के नज़ारे दिखते हैं अपने क्षेत्र में सबसे ज़्यादा सुधार करती हैं.

इस वीडियो में दिखाया गया है कि Street View की सेवा का इस्तेमाल करके, अपने उपयोगकर्ताओं को मैप पर मौजूद पते का असली अनुभव, जो उन्हें संदर्भ मिल सकता है.

Google Maps से उपलब्ध जानकारी Android API v2, Android पर मौजूद Google Maps ऐप्लिकेशन जैसा ही है डिवाइस. Street View के बारे में जानकारी में जाकर, Street View के बारे में ज़्यादा पढ़ा जा सकता है. साथ ही, इंटरैक्टिव मैप पर उन इलाकों को देखा जा सकता है जहां Street View की सुविधा उपलब्ध है.

StreetViewPanorama क्लास, Street View को मॉडल करती है अपने ऐप्लिकेशन में पैनोरामा देखें. आपके यूज़र इंटरफ़ेस (यूआई) में, एक पैनोरामा दिखता है StreetViewPanoramaFragment से या StreetViewPanoramaView ऑब्जेक्ट.

कोड सैंपल

GitHub पर ApiDemos रिपॉज़िटरी में ये शामिल हैं ऐसे नमूने जो Street View के इस्तेमाल को दिखाते हैं.

Kotlin के सैंपल:

Java के सैंपल:

Android के लिए Maps SDK टूल में Street View की खास जानकारी

Android के लिए Maps SDK टूल, Street View की सेवा देता है. इसकी मदद से, Google Street View में इस्तेमाल की जाने वाली तस्वीरों को हासिल किया जा सकता है और उनमें बदलाव किया जा सकता है. इमेज इस तरह से दिखाई जाती हैं दिखाई देता है.

हर Street View पैनोरामा एक इमेज या इमेज का सेट होता है, जो किसी एक जगह से 360 डिग्री वाला व्यू. इमेज, इक्वीरेक्टैंगलर (प्लेट कारे) प्रोजेक्शन के मुताबिक होनी चाहिए. इसमें 360 डिग्री का हॉरिज़ॉन्टल व्यू (पूरी तरह से चारों ओर) और 180 डिग्री का वर्टिकल व्यू (सीधे ऊपर से सीधे नीचे तक) होता है. इससे 360-डिग्री पैनोरमा बनता है, जिसमें स्फ़ीयर पर इमेज को प्रोजेक्ट किया जाता है. साथ ही, इमेज को स्फ़ीयर के दो-आयामी सरफ़ेस पर रैप किया जाता है.

StreetViewPanorama एक व्यूअर उपलब्ध कराता है, जो पैनोरमा को गोले के तौर पर रेंडर करता है. इसके बीच में कैमरा होता है. कैमरे के ज़ूम और ओरिएंटेशन (टिल्ट और बेअरिंग) को कंट्रोल करने के लिए, StreetViewPanoramaCamera का इस्तेमाल किया जा सकता है.

अपनी प्रोफ़ाइल बनाना शुरू करें

प्रोजेक्ट सेट अप करना

Android के लिए Maps SDK टूल का प्रोजेक्ट सेट अप करने के लिए, शुरू करने से जुड़ी गाइड पढ़ें.

पैनोरामा जोड़ने से पहले, 'स्ट्रीट व्यू' पैनोरामा की उपलब्धता देखें

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 पैनोरमा जोड़ने के लिए, यह तरीका अपनाएं:

Street View पैनोरामा डेमो

सारांश में:

  1. गतिविधि में फ़्रैगमेंट ऑब्जेक्ट जोड़ें जो Street View पैनोरामा को हैंडल कर पाएंगे. ऐसा करने का सबसे आसान तरीका यह है कि Activity के लिए, लेआउट फ़ाइल में <fragment> एलिमेंट जोड़ा जाए.
  2. OnStreetViewPanoramaReadyCallback इंटरफ़ेस लागू करें और StreetViewPanorama ऑब्जेक्ट का हैंडल पाने के लिए, onStreetViewPanoramaReady(StreetViewPanorama) कॉलबैक तरीके का इस्तेमाल करें.
  3. getStreetViewPanoramaAsync() को इस नंबर पर कॉल करें: फ़्रैगमेंट.

नीचे हर चरण के बारे में ज़्यादा जानकारी दी गई है.

फ़्रैगमेंट जोड़ना

गतिविधि के लेआउट फ़ाइल में <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 क्योंकि यह स्ट्रीट व्यू जोड़ने का सबसे आसान तरीका है आपके ऐप्लिकेशन को मिलता है. सबसे पहले, कॉलबैक इंटरफ़ेस लागू किया जाता है:

Kotlin

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

      

Java

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

      

आपके 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> एलिमेंट का रिसॉर्स आईडी पास करें. ध्यान दें कि संसाधन आईडी R.id.streetviewpanorama अपने-आप वह Android प्रोजेक्ट भी हो सकता है, जब आपने लेआउट फ़ाइल बनाई हो.

इसके बाद, फ़्रैगमेंट पर कॉलबैक सेट करने के लिए, 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);
}

      

शुरुआती स्थिति को कॉन्फ़िगर करने के बारे में ज़्यादा जानकारी

मैप के उलट, एक्सएमएल की मदद से स्ट्रीट व्यू पैनोरमा की शुरुआती स्थिति को कॉन्फ़िगर नहीं किया जा सकता. हालांकि, आपके पास यह कॉन्फ़िगर करने का विकल्प भी है कि में से पास करके पैनोरामा को प्रोग्रामेटिक रूप से 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));

      

StreetViewपैनोरामा फ़्रैगमेंट के बारे में ज़्यादा जानकारी

StreetViewPanoramaFragment, Android फ़्रैगमेंट क्लास का सबक्लास है. इसकी मदद से, Android फ़्रैगमेंट में Street View पैनोरमा डाला जा सकता है. StreetViewPanoramaFragment ऑब्जेक्ट, पैनोरमा के कंटेनर के तौर पर काम करते हैं और StreetViewPanorama ऑब्जेक्ट का ऐक्सेस देते हैं.

StreetViewPanoramaView

StreetViewPanoramaView, Android की एक सब-क्लास View क्लास, आपको Street View रखने की सुविधा मिलती है Android View में पैनोरामा. View, Android ऐप्लिकेशन और विजेट के लिए एक बुनियादी बिल्डिंग ब्लॉक है. StreetViewPanoramaFragment की तरह ही, StreetViewPanoramaView पैनोरमा के लिए कंटेनर के तौर पर काम करता है. साथ ही, StreetViewPanorama ऑब्जेक्ट की मदद से मुख्य फ़ंक्शन को दिखाता है. इस क्लास के उपयोगकर्ताओं को गतिविधि के सभी लाइफ़ साइकल के तरीके (जैसे कि onCreate(), onDestroy(), onResume(), और onPause())) को StreetViewPanoramaView क्लास के मिलते-जुलते तरीकों पर फ़ॉरवर्ड करना होगा.

उपयोगकर्ता के कंट्रोल वाली सुविधा को पसंद के मुताबिक बनाना

Street View पैनोरमा देखते समय, उपयोगकर्ता के लिए ये सुविधाएं डिफ़ॉल्ट रूप से उपलब्ध होती हैं: पैन करना, ज़ूम करना, और आस-पास के पैनोरमा पर जाना. StreetViewPanorama पर जाकर, उपयोगकर्ता के कंट्रोल वाले जेस्चर को चालू और बंद किया जा सकता है. प्रोग्राम किए गए तरीके से विज्ञापन जेस्चर के बंद होने पर भी बदलाव किए जा सकते हैं.

पैनोरामा की जगह सेट करना

Street View पैनोरमा की जगह सेट करने के लिए, LatLng को पास करते हुए StreetViewPanorama.setPosition() को कॉल करें. radius और source को वैकल्पिक पैरामीटर के तौर पर भी पास किया जा सकता है.

किसी दायरे को तब इस्तेमाल करें, जब आपको उसका प्रसार करना हो या उस क्षेत्र को छोटा करें जिसमें Street View मिलते-जुलते पैनोरामा खोजेगा. त्रिज्या के 0 होने का मतलब है कि पैनोरमा को LatLng से लिंक किया जाना चाहिए. दायरा डिफ़ॉल्ट रूप से 50 मीटर होता है. अगर मैच करने वाले इलाके में एक से ज़्यादा पैनोरमा हैं, तो एपीआई सबसे अच्छा मैच दिखाएगा.

अगर आपको 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 पर सेट करने से इमेज बड़ी हो जाएगी 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();

      

कैमरे का ओरिएंटेशन (पॉइंट ऑफ़ व्यू) सेट करना

StreetViewPanoramaCamera पर दिशा और झुकाव सेट करके, Street View कैमरे के ओरिएंटेशन का पता लगाया जा सकता है.

बियरिंग
वह दिशा जहां कैमरा इशारा करता है, डिग्री में बताया जाता है सही उत्तर से घड़ी की दिशा में, कैमरे की जगह के चारों ओर. सही उत्तर 0 है, पूर्व है दक्षिण का तापमान 90 है, दक्षिण का तापमान 180, और पश्चिम का तापमान 270 है.
झुकाएं
Y-ऐक्सिस ऊपर या नीचे झुकता है. रेंज -90 से 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);

      

जब ऊपर दिए गए ऐनिमेशन को चलाने के लिए शेड्यूल किया जाता है, तब यह इमेज नतीजा दिखाती है Handler.postDelayed() का इस्तेमाल करके, हर 2000 मिलीसेकंड में:

Street View पैनोरामा ऐनिमेशन का डेमो