Android का बेहतर वर्शन 09.1: Google Maps

1. आपका स्वागत है

यह कोडलैब, ऐंड्रॉयड डेवलपमेंट की ऐडवांस ट्रेनिंग वाले कोर्स का हिस्सा है. इसे Google Developers की ट्रेनिंग टीम ने तैयार किया है. अगर कोडलैब को क्रम से पूरा किया जाता है, तो इस कोर्स से आपको सबसे ज़्यादा फ़ायदा मिलेगा.

कोर्स के बारे में पूरी जानकारी के लिए, ऐडवांस Android डेवलपमेंट की खास जानकारी देखें.

शुरुआती जानकारी

Google Maps की मदद से ऐप्लिकेशन बनाने पर, आपको अपने ऐप्लिकेशन में कई सुविधाएं जोड़ने का विकल्प मिलता है. जैसे, सैटलाइट इमेज, यूज़र इंटरफ़ेस (यूआई) कंट्रोल, जगह की जानकारी ट्रैक करने की सुविधा, और जगह के मार्कर. अपने डेटा सेट से मिली जानकारी को Google Maps में दिखाया जा सकता है. इससे Google Maps को ज़्यादा बेहतर बनाया जा सकता है. जैसे, मछली पकड़ने या चढ़ाई करने के लिए मशहूर जगहों की जानकारी. असल दुनिया से जुड़े गेम भी बनाए जा सकते हैं. जैसे, Pokemon Go.

इस प्रैक्टिकल में, आपको Wander नाम का Google Maps ऐप्लिकेशन बनाना है.

आपको पहले से क्या पता होना चाहिए

आपको इनके बारे में जानकारी होनी चाहिए:

  • Google Maps की बुनियादी सुविधाएं.
  • रनटाइम की अनुमतियां.
  • Android Studio में ऐप्लिकेशन बनाना, उन्हें तैयार करना, और चलाना.
  • अपनी build.gradle फ़ाइल में बाहरी लाइब्रेरी शामिल करना.

आपको क्या सीखने को मिलेगा

  • अपने ऐप्लिकेशन में Google Maps को इंटिग्रेट करें.
  • अलग-अलग तरह के मैप दिखाएं.
  • Google Maps की स्टाइल तय करना.
  • अपने मैप में मार्कर जोड़ें.
  • इस सुविधा की मदद से, उपयोगकर्ता किसी दिलचस्पी वाली जगह (पीओआई) पर मार्कर लगा सकता है.
  • जगह की जानकारी ट्रैक करने की सुविधा चालू करें.
  • Google Street View चालू करें.

आपको क्या करना होगा

  • Google API कंसोल से एपीआई पासकोड पाएं और उसे अपने ऐप्लिकेशन के साथ रजिस्टर करें.
  • Wander ऐप्लिकेशन बनाएं, जिसमें Google Maps एम्बेड किया गया हो.
  • अपने ऐप्लिकेशन में मार्कर, स्टाइलिंग, और जगह की जानकारी ट्रैक करने जैसी कस्टम सुविधाएं जोड़ें.
  • अपने ऐप्लिकेशन में जगह की जानकारी ट्रैक करने और Street View की सुविधा चालू करें.

2. ऐप्लिकेशन की खास जानकारी

इस प्रैक्टिकल में, आपको Wander ऐप्लिकेशन बनाना है. यह स्टाइल किया गया Google Map है. Wander ऐप्लिकेशन की मदद से, जगहों पर मार्कर लगाए जा सकते हैं. साथ ही, अपनी जगह की रीयल-टाइम जानकारी देखी जा सकती है और Street View पैनोरमा देखे जा सकते हैं.

स्टाइल किया गया Google मैप

Android ऐप्लिकेशन में Google Street View

3. टास्क 1. प्रोजेक्ट सेट अप करना और एपीआई पासकोड पाना

Places API की तरह ही, Google Maps API के लिए भी एपीआई पासकोड ज़रूरी होता है. एपीआई पासकोड पाने के लिए, Google API Console में अपना प्रोजेक्ट रजिस्टर करें. एपीआई कुंजी, एक डिजिटल सर्टिफ़िकेट से जुड़ी होती है. यह सर्टिफ़िकेट, ऐप्लिकेशन को उसके डेवलपर से लिंक करता है. डिजिटल सर्टिफ़िकेट इस्तेमाल करने और ऐप्लिकेशन पर साइन करने के बारे में ज़्यादा जानने के लिए, अपने ऐप्लिकेशन पर साइन करना लेख पढ़ें.

इस प्रैक्टिकल में, डीबग सर्टिफ़िकेट के लिए एपीआई पासकोड का इस्तेमाल किया जाता है. डीबग सर्टिफ़िकेट को डिज़ाइन के हिसाब से सुरक्षित नहीं माना जाता है. इसके बारे में अपनी डीबग बिल्ड पर हस्ताक्षर करना लेख में बताया गया है. Google Maps API का इस्तेमाल करने वाले पब्लिश किए गए Android ऐप्लिकेशन के लिए, दूसरे एपीआई पासकोड की ज़रूरत होती है: रिलीज़ सर्टिफ़िकेट का पासकोड. रिलीज़ सर्टिफ़िकेट पाने के बारे में ज़्यादा जानने के लिए, एपीआई कुंजी पाना लेख पढ़ें.

Android Studio में Google Maps Activity टेंप्लेट शामिल होता है. यह टेंप्लेट, काम का टेंप्लेट कोड जनरेट करता है. टेंप्लेट कोड में एक google_maps_api.xml फ़ाइल शामिल होती है. इसमें एक ऐसा लिंक होता है जिसकी मदद से, एपीआई पासकोड आसानी से पाया जा सकता है.

1.1 Maps टेंप्लेट का इस्तेमाल करके Wander प्रोजेक्ट बनाना

  1. Android Studio में नया प्रोजेक्ट बनाएं.
  2. नए ऐप्लिकेशन का नाम "Wander" रखें. जब तक आपको गतिविधि जोड़ें पेज नहीं दिखता, तब तक डिफ़ॉल्ट सेटिंग स्वीकार करें.
  3. Google Maps गतिविधि टेंप्लेट चुनें.
  4. गतिविधि का नाम और लेआउट का नाम को डिफ़ॉल्ट पर सेट रहने दें.
  5. टाइटल को बदलकर "Wander" करें और हो गया पर क्लिक करें.

Android Studio, मैप से जुड़ी कई अन्य फ़ाइलें बनाता है:

google_maps_api**.xml**

इस कॉन्फ़िगरेशन फ़ाइल का इस्तेमाल, अपनी एपीआई कुंजी को सेव करने के लिए किया जाता है. यह टेंप्लेट, दो google_maps_api.xml फ़ाइलें जनरेट करता है: एक डीबग करने के लिए और दूसरी रिलीज़ करने के लिए. डीबग प्रमाणपत्र के लिए एपीआई पासकोड वाली फ़ाइल, src/debug/res/values में मौजूद होती है. रिलीज़ सर्टिफ़िकेट के एपीआई पासकोड की फ़ाइल, src/release/res/values में मौजूद होती है. इस प्रैक्टिकल में, हम सिर्फ़ डीबग सर्टिफ़िकेट का इस्तेमाल करते हैं.

activity_maps.xml

इस लेआउट फ़ाइल में एक फ़्रैगमेंट होता है, जो पूरी स्क्रीन पर दिखता है. SupportMapFragment क्लास, Fragment क्लास की सबक्लास है. लेआउट फ़ाइल में SupportMapFragment को शामिल किया जा सकता है. इसके लिए, किसी भी ViewGroup में <fragment> टैग का इस्तेमाल करें. साथ ही, एक और एट्रिब्यूट जोड़ें:

android:name="com.google.android.gms.maps.SupportMapFragment"

MapsActivity.java

MapsActivity.java फ़ाइल, SupportMapFragment क्लास को इंस्टैंशिएट करती है. साथ ही, Google मैप तैयार करने के लिए क्लास के getMapAsync() तरीके का इस्तेमाल करती है. जिस गतिविधि में SupportMapFragment शामिल है उसे OnMapReadyCallback इंटरफ़ेस और उस इंटरफ़ेस के onMapReady() तरीके को लागू करना होगा. getMapAsync() तरीका, GoogleMap ऑब्जेक्ट दिखाता है. इसका मतलब है कि मैप लोड हो गया है.

1.2 एपीआई पासकोड पाना

  1. google_maps_api.xml फ़ाइल का डीबग वर्शन खोलें.

फ़ाइल में एक ऐसी टिप्पणी शामिल है जिसमें लंबा यूआरएल है. यूआरएल के पैरामीटर में, आपके ऐप्लिकेशन के बारे में खास जानकारी शामिल होती है.

  1. यूआरएल को कॉपी करें और किसी ब्राउज़र में चिपकाएं.
  2. Google API Console में प्रोजेक्ट बनाने के लिए, दिए गए निर्देशों का पालन करें. दिए गए यूआरएल में मौजूद पैरामीटर की वजह से, API Console को Google Maps Android API को अपने-आप चालू करने के बारे में पता चल जाता है
  3. एक एपीआई पासकोड बनाएं. इसके बाद, पासकोड के इस्तेमाल पर पाबंदी लगाएं पर क्लिक करके, पासकोड के इस्तेमाल को Android ऐप्लिकेशन तक सीमित करें. जनरेट किया गया एपीआई पासकोड, AIza से शुरू होना चाहिए.
  4. google_maps_api.xml फ़ाइल में, कुंजी को google_maps_key स्ट्रिंग में चिपकाएं. यह स्ट्रिंग YOUR_KEY_HERE के बगल में मौजूद होती है.
  5. अपना ऐप्लिकेशन चलाएं. आपकी गतिविधि में एक एम्बेड किया गया मैप है. इसमें ऑस्ट्रेलिया के सिडनी शहर में एक मार्कर सेट किया गया है. (सिडनी मार्कर, टेंप्लेट का हिस्सा है. इसे बाद में बदला जा सकता है.)

4. टास्क 2. मैप टाइप और मार्कर जोड़ना

Google Maps में कई तरह के मैप शामिल हैं: सामान्य, हाइब्रिड, सैटलाइट, इलाके की बनावट, और "कोई नहीं". इस टास्क में, आपको विकल्पों वाले मेन्यू के साथ एक ऐप्लिकेशन बार जोड़ना है. इससे उपयोगकर्ता को मैप का टाइप बदलने की सुविधा मिलती है. मैप की शुरुआती जगह को अपने घर की जगह पर ले जाएं. इसके बाद, मार्कर के लिए सहायता जोड़ी जाती है. मार्कर, मैप पर किसी एक जगह को दिखाते हैं और इनमें लेबल शामिल हो सकता है.

2.1 मैप टाइप जोड़ना

उपयोगकर्ता को किस तरह का मैप चाहिए, यह इस बात पर निर्भर करता है कि उसे किस तरह की जानकारी चाहिए. कार में नेविगेशन के लिए मैप का इस्तेमाल करते समय, सड़कों के नाम साफ़ तौर पर दिखना ज़रूरी है. हाइकिंग करते समय, आपको शायद इस बात से ज़्यादा फ़र्क़ पड़ता है कि पहाड़ की चोटी तक पहुंचने के लिए, आपको कितनी चढ़ाई करनी है. इस चरण में, विकल्पों वाले मेन्यू के साथ एक ऐप्लिकेशन बार जोड़ा जाता है. इससे उपयोगकर्ता को मैप का टाइप बदलने की सुविधा मिलती है.

  1. नई मेन्यू XML फ़ाइल बनाने के लिए, अपनी res डायरेक्ट्री पर राइट क्लिक करें. इसके बाद, New > Android Resource File को चुनें.
  2. डायलॉग बॉक्स में, फ़ाइल को नाम दें map_options. संसाधन के टाइप के लिए, मेन्यू चुनें. ठीक है पर क्लिक करें.
  3. मैप के विकल्प बनाने के लिए, नई फ़ाइल में मौजूद कोड को इस कोड से बदलें. "कोई नहीं" मैप टाइप को शामिल नहीं किया गया है, क्योंकि "कोई नहीं" चुनने पर कोई मैप नहीं दिखता.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto">
   <item android:id="@+id/normal_map"
       android:title="@string/normal_map"
       app:showAsAction="never"/>
   <item android:id="@+id/hybrid_map"
       android:title="@string/hybrid_map"
       app:showAsAction="never"/>
   <item android:id="@+id/satellite_map"
       android:title="@string/satellite_map"
       app:showAsAction="never"/>
   <item android:id="@+id/terrain_map"
       android:title="@string/terrain_map"
       app:showAsAction="never"/>
</menu>
  1. title एट्रिब्यूट के लिए स्ट्रिंग संसाधन बनाएं.
  2. MapsActivity फ़ाइल में, क्लास को बदलकर FragmentActivity क्लास के बजाय AppCompatActivity क्लास को बढ़ाएं. AppCompatActivity का इस्तेमाल करने पर, ऐप्लिकेशन बार दिखेगा. इसलिए, यह मेन्यू दिखाएगा.
  3. MapsActivity में, onCreateOptionsMenu() तरीके को बदलें और map_options फ़ाइल का साइज़ बढ़ाएं:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
   MenuInflater inflater = getMenuInflater();
   inflater.inflate(R.menu.map_options, menu);
   return true;
}
  1. मैप का टाइप बदलने के लिए, GoogleMap ऑब्जेक्ट पर setMapType() तरीके का इस्तेमाल करें. साथ ही, मैप-टाइप के किसी एक कॉन्स्टेंट को पास करें.

onOptionsItemSelected() तरीके को बदलें. जब उपयोगकर्ता मेन्यू के किसी विकल्प को चुनता है, तब मैप का टाइप बदलने के लिए, यह कोड चिपकाएं:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
       // Change the map type based on the user's selection.
       switch (item.getItemId()) {
           case R.id.normal_map:
               mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
               return true;
           case R.id.hybrid_map:
               mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
               return true;
           case R.id.satellite_map:
               mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
               return true;
           case R.id.terrain_map:
               mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
               return true;
           default:
               return super.onOptionsItemSelected(item);
       }
    }
  1. ऐप्लिकेशन चलाएं. मैप का टाइप बदलने के लिए, ऐप्लिकेशन बार में मौजूद मेन्यू का इस्तेमाल करें. ध्यान दें कि मैप का दिखने का तरीका कैसे बदलता है.

2.2 मैप की डिफ़ॉल्ट जगह की जानकारी बदलना

डिफ़ॉल्ट रूप से, onMapReady() कॉलबैक में ऐसा कोड शामिल होता है जो ऑस्ट्रेलिया के सिडनी में एक मार्कर लगाता है. Google Maps को यहीं बनाया गया था. डिफ़ॉल्ट कॉलबैक, मैप को सिडनी पर पैन करने के लिए ऐनिमेट भी करता है. इस चरण में, आपको मैप को अपने घर की जगह पर पैन करना होगा. इसके लिए, मार्कर लगाने की ज़रूरत नहीं है. इसके बाद, मैप को उस लेवल पर ज़ूम करना होगा जिसे आपने तय किया है.

  1. onMapReady() तरीके में, उस कोड को हटाएं जो सिडनी में मार्कर लगाता है और कैमरे को घुमाता है.
  2. अपने ब्राउज़र में www.google.com/maps पर जाएं और अपना घर ढूंढें.
  3. जगह की जानकारी पर राइट क्लिक करें और यहां क्या है? चुनें

स्क्रीन पर नीचे की ओर, जगह की जानकारी देने वाली एक छोटी विंडो पॉप-अप होती है. इसमें अक्षांश और देशांतर की जानकारी शामिल होती है.

  1. home नाम का नया LatLng ऑब्जेक्ट बनाएं. LatLng ऑब्जेक्ट में, ब्राउज़र पर Google Maps से मिले निर्देशांकों का इस्तेमाल करें.
  2. zoom नाम का float वैरिएबल बनाएं और उसे अपने हिसाब से शुरुआती ज़ूम लेवल पर सेट करें. यहां दी गई सूची से आपको यह पता चलेगा कि ज़ूम करने के हर लेवल पर कितनी जानकारी दिखती है:
  • 1: दुनिया
  • 5: भूखंड/महाद्वीप
  • 10: शहर
  • 15: सड़कें
  • 20: इमारतें
  1. CameraUpdateFactory.newLatLngZoom() का इस्तेमाल करके CameraUpdate ऑब्जेक्ट बनाएं. इसके लिए, अपने LatLng ऑब्जेक्ट और zoom वैरिएबल को पास करें. GoogleMap ऑब्जेक्ट पर moveCamera() को कॉल करके, कैमरे को पैन और ज़ूम करें. इसके लिए, नया CameraUpdate ऑब्जेक्ट पास करें:
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(home, zoom));
  1. ऐप्लिकेशन चलाएं. मैप को आपके घर की जगह पर पैन होना चाहिए और मनचाहे लेवल पर ज़ूम इन होना चाहिए.

2.3 मैप मार्कर जोड़ना

Google Maps, मार्कर का इस्तेमाल करके किसी जगह को हाइलाइट कर सकता है. मार्कर बनाने के लिए, Marker क्लास का इस्तेमाल किया जाता है. डिफ़ॉल्ट मार्कर, Google Maps के स्टैंडर्ड आइकॉन का इस्तेमाल करता है: Google Maps मार्कर

जानकारी वाली विंडो में विषय से जुड़ी जानकारी दिखाने के लिए, मार्कर को बड़ा किया जा सकता है.

इस चरण में, आपको एक मार्कर जोड़ना होता है. यह मार्कर तब दिखता है, जब उपयोगकर्ता मैप पर किसी जगह को टैप करके रखता है. इसके बाद, एक InfoWindow जोड़ें. इससे मार्कर पर टैप करने पर, मार्कर के निर्देशांक दिखते हैं.

ड्रॉप किए गए पिन के लिए जानकारी वाली विंडो

  1. MapsActivity में setMapLongClick() नाम का एक मैथड स्टब बनाएं. यह final GoogleMap को आर्ग्युमेंट के तौर पर लेता है और void दिखाता है:
private void setMapLongClick(final GoogleMap map) {}
  1. उपयोगकर्ता के टच करके होल्ड करने की जगह पर मार्कर लगाने के लिए, GoogleMap ऑब्जेक्ट के setOnMapLongClickListener() तरीके का इस्तेमाल करें. OnMapLongClickListener का नया इंस्टेंस पास करें, जो onMapLongClick() तरीके को बदलता है. आने वाला आर्ग्युमेंट एक LatLng ऑब्जेक्ट है. इसमें उस जगह के कोऑर्डिनेट होते हैं जहां उपयोगकर्ता ने दबाया था:
private void setMapLongClick(final GoogleMap map) {
   map.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
       @Override
       public void onMapLongClick(LatLng latLng) {
       }
   });
}
  1. onMapLongClick() के अंदर, addMarker() तरीके को कॉल करें. MarkerOptions ऑब्जेक्ट में, LatLng के तौर पर पास की गई नई पोज़िशन सेट करें:
map.addMarker(new MarkerOptions().position(latLng));
  1. onMapReady() तरीके के आखिर में setMapLongClick() को कॉल करें. mMap में पास करें.
  2. ऐप्लिकेशन चलाएं. किसी जगह पर मार्कर लगाने के लिए, मैप पर उस जगह को दबाकर रखें.
  3. मार्कर पर टैप करें. इससे मार्कर, स्क्रीन के बीच में आ जाएगा.

नेविगेशन बटन, स्क्रीन पर सबसे नीचे बाईं ओर दिखते हैं. इनकी मदद से, उपयोगकर्ता Google Maps ऐप्लिकेशन का इस्तेमाल करके, मार्क की गई जगह पर जा सकता है.

मार्कर के लिए जानकारी वाली विंडो जोड़ने के लिए:

  1. MarkerOptions ऑब्जेक्ट में, title फ़ील्ड और snippet फ़ील्ड सेट करें.
  2. onMapLongClick() में जाकर, title फ़ील्ड को "ड्रॉप किया गया पिन" पर सेट करें. addMarker() फ़ील्ड को addMarker() तरीके के अंदर मौजूद जगह के निर्देशांकों पर सेट करें.snippet
map.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
   @Override
   public void onMapLongClick(LatLng latLng) {
       String snippet = String.format(Locale.getDefault(),
               "Lat: %1$.5f, Long: %2$.5f",
               latLng.latitude,
               latLng.longitude);

       map.addMarker(new MarkerOptions()
               .position(latLng)
               .title(getString(R.string.dropped_pin))
               .snippet(snippet));
   }
});
  1. ऐप्लिकेशन चलाएं. जगह का मार्कर जोड़ने के लिए, मैप पर दबाकर रखें. जानकारी विंडो दिखाने के लिए, मार्कर पर टैप करें.

2.4 POI लिसनर जोड़ना

डिफ़ॉल्ट रूप से, मैप पर लोकप्रिय जगहें (पीओआई) और उनसे जुड़े आइकॉन दिखते हैं. दिलचस्पी की जगहों में पार्क, स्कूल, सरकारी इमारतें वगैरह शामिल हैं. मैप टाइप को normal पर सेट करने पर, कारोबार की दिलचस्पी वाली जगहों (पीओआई) की जानकारी भी मैप पर दिखती है. कारोबार के पीओएस, दुकानों, रेस्टोरेंट, और होटल जैसे कारोबारों के बारे में जानकारी देते हैं.

इस चरण में, आपको मैप में GoogleMap.OnPoiClickListener जोड़ना है. यह क्लिक-लिसनर, दबाकर रखने का इंतज़ार करने के बजाय, तुरंत मैप पर मार्कर लगाता है. क्लिक-लिसनर, जानकारी वाली विंडो भी दिखाता है. इसमें पीओआई का नाम होता है.

लोकप्रिय जगह का मार्कर

  1. MapsActivity में setPoiClick() नाम का एक मैथड स्टब बनाएं. यह final GoogleMap को आर्ग्युमेंट के तौर पर लेता है और void दिखाता है:
private void setPoiClick(final GoogleMap map) {}
  1. setPoiClick() तरीके में, पास किए गए GoogleMap पर OnPoiClickListener सेट करें:
map.setOnPoiClickListener(new GoogleMap.OnPoiClickListener() {
   @Override
   public void onPoiClick(PointOfInterest poi) {
   }
});
  1. onPoiClick() तरीके में, मार्कर को लोकप्रिय जगह की लोकेशन पर रखें. टाइटल को जगह के नाम पर सेट करें. नतीजे को poiMarker नाम के वैरिएबल में सेव करें.
public void onPoiClick(PointOfInterest poi) {
   Marker poiMarker = mMap.addMarker(new MarkerOptions()
       .position(poi.latLng)
       .title(poi.name);
}
  1. जानकारी वाली विंडो को तुरंत दिखाने के लिए, showInfoWindow() को poiMarker पर कॉल करें.
poiMarker.showInfoWindow();
  1. onMapReady() के आखिर में setPoiClick() को कॉल करें. mMap में पास करें.
  2. अपना ऐप्लिकेशन चलाएं और कोई पीओएस ढूंढें, जैसे कि पार्क. किसी जगह पर मार्कर लगाने के लिए, उस जगह पर टैप करें. इससे जानकारी वाली विंडो में उस जगह का नाम दिखेगा.

5. टास्क 3. अपने मैप को शैली ,में ढ़ालें

Google Maps को कई तरीकों से अपनी पसंद के मुताबिक बनाया जा सकता है. इससे आपके मैप को एक अलग लुक और फ़ील मिलता है.

आपके पास उपलब्ध एक्सएमएल एट्रिब्यूट का इस्तेमाल करके, MapFragment ऑब्जेक्ट को अपनी पसंद के मुताबिक बनाने का विकल्प होता है. ठीक वैसे ही जैसे किसी अन्य फ़्रैगमेंट को पसंद के मुताबिक बनाया जाता है. हालांकि, इस चरण में GoogleMap ऑब्जेक्ट पर मौजूद तरीकों का इस्तेमाल करके, MapFragment के कॉन्टेंट के लुक और स्टाइल को पसंद के मुताबिक बनाया जाता है. अपने मैप में स्टाइल जोड़ने और मार्कर को पसंद के मुताबिक बनाने के लिए, ऑनलाइन स्टाइलिंग विज़र्ड का इस्तेमाल करें. आपके पास अपने घर की जगह की जानकारी में GroundOverlay जोड़ने का विकल्प भी होता है. यह मैप के साथ-साथ स्केल और रोटेट होता है.

3.1 अपने मैप में स्टाइल जोड़ना

अपने मैप के लिए पसंद के मुताबिक स्टाइल बनाने के लिए, एक JSON फ़ाइल जनरेट करें. इसमें यह जानकारी होती है कि मैप में सुविधाएं कैसे दिखाई जाती हैं. आपको यह JSON फ़ाइल मैन्युअल तरीके से बनाने की ज़रूरत नहीं है: Google, स्टाइलिंग विज़र्ड उपलब्ध कराता है. यह आपके मैप को विज़ुअल स्टाइल देने के बाद, आपके लिए JSON जनरेट करता है. इस प्रैक्टिकल में, आपको मैप को "नाइट मोड" के लिए स्टाइल करना है. इसका मतलब है कि मैप में रात के समय इस्तेमाल करने के लिए, हल्के रंग और कम कंट्रास्ट का इस्तेमाल किया जाता है.

  1. अपने ब्राउज़र में https://mapstyle.withgoogle.com/ पर जाएं.
  2. स्टाइल बनाएं को चुनें.
  3. नाइट थीम चुनें.
  4. मेन्यू में सबसे नीचे, ज़्यादा विकल्प पर क्लिक करें.
  5. फ़िल टाइप सूची में सबसे नीचे, पानी > भरें चुनें. पानी का रंग बदलकर गहरा नीला करें. उदाहरण के लिए, #160064.
  6. पूरा करें पर क्लिक करें. इसके बाद खुलने वाली पॉप-अप विंडो से JSON कोड कॉपी करें.
  7. Android Studio में, res डायरेक्ट्री में raw नाम की एक संसाधन डायरेक्ट्री बनाएं. res/raw में map_style.json नाम की फ़ाइल बनाओ.
  8. JSON कोड को नई संसाधन फ़ाइल में चिपकाएं.
  9. मैप के लिए JSON स्टाइल सेट करने के लिए, GoogleMap ऑब्जेक्ट पर setMapStyle() को कॉल करें. MapStyleOptions ऑब्जेक्ट पास करें, जो JSON फ़ाइल को लोड करता है. setMapStyle() वाला तरीका, स्टाइलिंग के सफल होने पर बूलियन वैल्यू दिखाता है. अगर फ़ाइल लोड नहीं की जा सकती, तो यह तरीका Resources.NotFoundException दिखाता है.

मैप को स्टाइल करने के लिए, नीचे दिए गए कोड को onMapReady() तरीके में कॉपी करें. आपको अपने लॉग स्टेटमेंट के लिए, TAG स्ट्रिंग बनानी पड़ सकती है:

     try {
        // Customize the styling of the base map using a JSON object defined
        // in a raw resource file.
        boolean success = googleMap.setMapStyle(
           MapStyleOptions.loadRawResourceStyle(
                   this, R.raw.map_style));

        if (!success) {
            Log.e(TAG, "Style parsing failed.");
        }
     } catch (Resources.NotFoundException e) {
        Log.e(TAG, "Can't find style. Error: ", e);
     }
  1. अपना ऐप्लिकेशन चलाएं. मैप के normal मोड में होने पर, नई स्टाइल दिखनी चाहिए.

नाइट मोड स्टाइल में Google मैप

3.2 मार्कर का स्टाइल बदलना

मैप मार्कर की स्टाइल बदलकर, मैप को अपनी पसंद के मुताबिक बनाया जा सकता है. इस चरण में, नाइट मोड की कलर स्कीम से मेल खाने के लिए, डिफ़ॉल्ट लाल मार्कर बदले जाते हैं.

  1. onMapLongClick() तरीके में, डिफ़ॉल्ट मार्कर का इस्तेमाल करने के लिए, MarkerOptions() कंस्ट्रक्टर में कोड की यह लाइन जोड़ें. हालांकि, इसका रंग नीले रंग में बदल जाएगा:
.icon(BitmapDescriptorFactory.defaultMarker
       (BitmapDescriptorFactory.HUE_BLUE))
  1. ऐप्लिकेशन चलाएं. अब आपके लगाए गए मार्कर, नीले रंग के हो गए हैं. यह ऐप्लिकेशन के नाइट मोड की थीम के साथ ज़्यादा मेल खाते हैं.

ध्यान दें कि पीओआई मार्कर अब भी लाल रंग के हैं, क्योंकि आपने onPoiClick() तरीके में स्टाइलिंग नहीं जोड़ी है.

3.3 ओवरले जोड़ना

Google मैप को अपनी पसंद के मुताबिक बनाने का एक तरीका यह है कि उसके ऊपर कुछ ड्रा किया जाए. अगर आपको किसी खास तरह की जगह को हाइलाइट करना है, तो यह तकनीक आपके काम आ सकती है. जैसे, मछली पकड़ने की लोकप्रिय जगहें. तीन तरह के ओवरले इस्तेमाल किए जा सकते हैं:

  • शेप: मैप में पॉलीलाइन, पॉलीगॉन, और सर्कल जोड़े जा सकते हैं.
  • TileOverlay ऑब्जेक्ट: टाइल ओवरले, इमेज का एक ऐसा सेट होता है जिसे बेस मैप टाइल के ऊपर जोड़ा जाता है. टाइलों वाले ओवरले तब काम आते हैं, जब आपको मैप में ज़्यादा इमेज जोड़नी हों. आम तौर पर, टाइल ओवरले में एक बड़ा भौगोलिक इलाका शामिल होता है.
  • GroundOverlay ऑब्जेक्ट: ग्राउंड ओवरले, मैप पर फ़िक्स की गई इमेज होती है. मार्कर के उलट, ग्राउंड ओवरले को स्क्रीन के बजाय पृथ्वी की सतह के हिसाब से ओरिएंट किया जाता है. मैप को घुमाने, झुकाने या ज़ूम करने से इमेज का ओरिएंटेशन बदल जाता है. ग्राउंड ओवरले तब काम आते हैं, जब आपको मैप पर किसी एक जगह पर कोई इमेज सेट करनी हो

इस चरण में, आपको अपने घर की जगह पर Android के आकार का ग्राउंड ओवरले जोड़ना है.

  1. इस Android इमेज को डाउनलोड करें और इसे अपने res/drawable फ़ोल्डर में सेव करें.
  2. onMapReady() में, कैमरे को डिफ़ॉल्ट स्थिति में ले जाने के लिए कॉल करने के बाद, GroundOverlayOptions ऑब्जेक्ट बनाएं. ऑब्जेक्ट को homeOverlay नाम के वैरिएबल को असाइन करें:
GroundOverlayOptions homeOverlay = new GroundOverlayOptions();
  1. ऊपर दी गई इमेज से BitmapDescriptor ऑब्जेक्ट बनाने के लिए, BitmapDescriptorFactory.fromResource() तरीके का इस्तेमाल करें. ऑब्जेक्ट को GroundOverlayOptions ऑब्जेक्ट के image() तरीके में पास करें:
GroundOverlayOptions homeOverlay = new GroundOverlayOptions()
    .image(BitmapDescriptorFactory.fromResource(R.drawable.android));
  1. position() तरीके को कॉल करके, GroundOverlayOptions ऑब्जेक्ट के लिए position प्रॉपर्टी सेट करें. home LatLng ऑब्जेक्ट और float को पास करें. float, मीटर में उस ओवरले की चौड़ाई होती है जो आपको चाहिए. इस उदाहरण के लिए, 100 मीटर की चौड़ाई सही है:
GroundOverlayOptions homeOverlay = new GroundOverlayOptions()
     .image(BitmapDescriptorFactory.fromResource(R.drawable.android))
       .position(home, 100);
  1. GoogleMap ऑब्जेक्ट पर addGroundOverlay() को कॉल करें. अपना GroundOverlayOptions ऑब्जेक्ट पास करें:
mMap.addGroundOverlay(homeOverlay);
  1. ऐप्लिकेशन चलाएं. अपनी होम लोकेशन पर ज़ूम इन करें. आपको Android की इमेज, ओवरले के तौर पर दिखेगी.

6. टास्क 4. जगह की जानकारी ट्रैक करने और Street View की सुविधा चालू करना

लोग अक्सर Google Maps का इस्तेमाल करके, अपनी मौजूदा जगह की जानकारी देखते हैं. साथ ही, Location Services API का इस्तेमाल करके, डिवाइस की जगह की जानकारी हासिल की जा सकती है. Location डेटा का इस्तेमाल किए बिना, मैप पर डिवाइस की जगह की जानकारी दिखाने के लिए, जगह की जानकारी का डेटा लेयर का इस्तेमाल किया जा सकता है.

जगह की जानकारी वाली डेटा लेयर, मैप के सबसे ऊपर दाईं ओर मेरी जगह की जानकारी बटन जोड़ती है. जब उपयोगकर्ता इस बटन पर टैप करता है, तो मैप डिवाइस की जगह की जानकारी पर फ़ोकस करता है. अगर डिवाइस एक जगह पर है, तो उसकी जगह की जानकारी नीले बिंदु के तौर पर दिखती है. अगर डिवाइस चल रहा है, तो उसकी जगह की जानकारी नीले रंग के शेवरॉन के तौर पर दिखती है.

स्टाइल किया गया Google मैप, जिसमें जगह की जानकारी को ट्रैक करने की सुविधा है

Google Street View का इस्तेमाल करके, किसी जगह के बारे में ज़्यादा जानकारी दी जा सकती है. यह किसी जगह की पैनोरमा फ़ोटो होती है, जिसे नेविगेट किया जा सकता है.

इस टास्क में, आपको जगह की जानकारी वाली लेयर और स्ट्रीट व्यू को चालू करना है, ताकि जब उपयोगकर्ता, पीओआई मार्कर की जानकारी वाली विंडो पर टैप करे, तो मैप स्ट्रीट व्यू मोड में चला जाए.

4.1 जगह की जानकारी ट्रैक करने की सुविधा चालू करना

Google Maps में जगह की जानकारी को ट्रैक करने की सुविधा चालू करने के लिए, कोड की सिर्फ़ एक लाइन की ज़रूरत होती है. हालांकि, आपको यह पक्का करना होगा कि उपयोगकर्ता ने स्थान की अनुमतियां दी हों. इसके लिए, रनटाइम-अनुमति मॉडल का इस्तेमाल करें.

इस चरण में, जगह की जानकारी ऐक्सेस करने की अनुमतियों का अनुरोध किया जाता है और जगह की जानकारी ट्रैक करने की सुविधा चालू की जाती है.

  1. AndroidManifest.xml फ़ाइल में, पुष्टि करें कि FINE_LOCATION अनुमति पहले से मौजूद है. Google Maps टेंप्लेट चुनने पर, Android Studio ने यह अनुमति जोड़ी है.
  2. अपने ऐप्लिकेशन में जगह की जानकारी ट्रैक करने की सुविधा चालू करने के लिए, MapsActivity में enableMyLocation() नाम का एक तरीका बनाएं. इसमें कोई तर्क नहीं होता और यह कुछ भी नहीं दिखाता.
  3. enableMyLocation() तरीके को तय करें. ACCESS_FINE_LOCATION की अनुमति देखें. अगर अनुमति दी गई है, तो जगह की जानकारी वाली लेयर चालू करें. अगर ऐसा नहीं है, तो अनुमति का अनुरोध करें:
private void enableMyLocation() {
   if (ContextCompat.checkSelfPermission(this,
           Manifest.permission.ACCESS_FINE_LOCATION)
           == PackageManager.PERMISSION_GRANTED) {
       mMap.setMyLocationEnabled(true);
   } else {
       ActivityCompat.requestPermissions(this, new String[]
                       {Manifest.permission.ACCESS_FINE_LOCATION},
               REQUEST_LOCATION_PERMISSION);
   }
}
  1. जगह की जानकारी वाली लेयर को चालू करने के लिए, onMapReady() कॉलबैक से enableMyLocation() को कॉल करें.
  2. onRequestPermissionsResult() तरीके को बदलें. अगर अनुमति दी गई है, तो enableMyLocation() को कॉल करें:
@Override
public void onRequestPermissionsResult(int requestCode,
       @NonNull String[] permissions,
       @NonNull int[] grantResults) {
   // Check if location permissions are granted and if so enable the
   // location data layer.
   switch (requestCode) {
       case REQUEST_LOCATION_PERMISSION:
           if (grantResults.length > 0
                   && grantResults[0]
                   == PackageManager.PERMISSION_GRANTED) {
               enableMyLocation();
               break;
           }
   }
}
  1. ऐप्लिकेशन चलाएं. अब सबसे ऊपर दाएं कोने में, मेरी जगह बटन दिखेगा. इस पर डिवाइस की मौजूदा जगह की जानकारी दिखेगी.

4.2 Street View चालू करना

Google Maps में Street View की सुविधा मिलती है. यह किसी जगह का पैनोरमिक व्यू होता है. इसमें किसी तय रास्ते पर नेविगेट करने के लिए कंट्रोल होते हैं. Street View की सुविधा, दुनिया के सभी देशों में उपलब्ध नहीं है.

इस चरण में, आपको Street View पैनोरमा चालू करना होगा. यह तब चालू होता है, जब उपयोगकर्ता किसी जगह की जानकारी वाली विंडो पर टैप करता है. आपको ये दो काम करने होंगे:

  1. पीओआई मार्कर को अन्य मार्कर से अलग करें, क्योंकि आपको अपने ऐप्लिकेशन की सुविधा को सिर्फ़ पीओआई मार्कर पर काम करना है. इस तरह, जब उपयोगकर्ता किसी जगह की जानकारी वाली विंडो पर टैप करता है, तब स्ट्रीट व्यू शुरू किया जा सकता है. हालांकि, जब उपयोगकर्ता किसी दूसरे टाइप के मार्कर पर टैप करता है, तब स्ट्रीट व्यू शुरू नहीं किया जा सकता.

Marker क्लास में एक setTag() मेथड शामिल होता है, जिसकी मदद से डेटा अटैच किया जा सकता है. (डेटा, Object से एक्सटेंड होने वाला कोई भी डेटा हो सकता है). आपको उन मार्कर पर टैग सेट करना होगा जो उपयोगकर्ताओं के पीओएस पर क्लिक करने पर बनाए जाते हैं.

  1. जब उपयोगकर्ता, टैग की गई जानकारी वाली विंडो में मौजूद OnInfoWindowClickListener पर टैप करता है, तो MapFragment को StreetViewPanoramaFragment से बदलें. (नीचे दिए गए कोड में, API 12 से पहले के Android वर्शन के लिए SupportMapFragment और SupportStreetViewPanoramaFragment का इस्तेमाल किया गया है.)

अगर रनटाइम के दौरान किसी फ़्रैगमेंट में बदलाव होता है, तो आपको उन्हें शामिल करने वाली Activity क्लास में जोड़ना होगा. साथ ही, उन्हें एक्सएमएल में स्टैटिक तौर पर नहीं जोड़ना होगा.

लोकप्रिय जगह के मार्कर को टैग करना

  1. onPoiClick() कॉलबैक फ़ंक्शन में, poiMarker पर setTag() को कॉल करें. कोई भी स्ट्रिंग पास करें:
poiMarker.setTag("poi");

स्टैटिक SupportMapFragment को रनटाइम इंस्टेंस से बदलना

  1. activity_maps.xml खोलें और एलिमेंट को ऐसे फ़्रेम लेआउट में बदलें जो आपके फ़्रैगमेंट के लिए कंटेनर के तौर पर काम करेगा:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/fragment_container"
   android:layout_width="match_parent"
   android:layout_height="match_parent" />
  1. MapsActivity में onCreate() में, आईडी के हिसाब से SupportMapFragment ढूंढने वाले कोड को हटा दें. ऐसा इसलिए, क्योंकि अब एक्सएमएल में कोई स्टैटिक SupportMapFragment नहीं है. इसके बजाय, SupportMapFragment.newInstance() को कॉल करके, SupportMapFragment का नया रनटाइम इंस्टेंस बनाएं:
SupportMapFragment mapFragment = SupportMapFragment.newInstance();
  1. FragmentManager का इस्तेमाल करके, फ़्रैगमेंट को FrameLayout में जोड़ें:
getSupportFragmentManager().beginTransaction()
       .add(R.id.fragment_container, mapFragment).commit();
  1. मैप को एसिंक्रोनस तरीके से लोड करने वाले कोड की लाइन को बनाए रखें:
mapFragment.getMapAsync(this);

OnInfoWindowClickListener सेट करना और मार्कर टैग की जांच करना

  1. MapsActivity में setInfoWindowClickToPanorama() नाम का एक मैथड स्टब बनाएं. यह GoogleMap को आर्ग्युमेंट के तौर पर लेता है और void दिखाता है:
private void setInfoWindowClickToPanorama(GoogleMap map) {}
  1. GoogleMap के लिए OnInfoWindowClickListener सेट करें:
map.setOnInfoWindowClickListener(
       new GoogleMap.OnInfoWindowClickListener() {
           @Override
           public void onInfoWindowClick(Marker marker) {
           }
       });
  1. onInfoWindowClick() तरीके में, देखें कि मार्कर में वह स्ट्रिंग टैग मौजूद है या नहीं जिसे आपने onPoiClick() तरीके में सेट किया था:
if (marker.getTag() == "poi") {}

SupportMapFragment की जगह SupportStreetViewPanoramaFragment का इस्तेमाल करें

  1. अगर मार्कर में टैग मौजूद है, तो StreetViewPanoramaOptions ऑब्जेक्ट का इस्तेमाल करके, Street View पैनोरमा के लिए जगह की जानकारी दें. ऑब्जेक्ट की position प्रॉपर्टी को, पास किए गए मार्कर की पोज़िशन पर सेट करें:
StreetViewPanoramaOptions options =
       new StreetViewPanoramaOptions().position(
               marker.getPosition());
  1. आपने जो options ऑब्जेक्ट बनाया है उसे पास करके, SupportStreetViewPanoramaFragment का नया इंस्टेंस बनाएं:
SupportStreetViewPanoramaFragment streetViewFragment
       = SupportStreetViewPanoramaFragment
       .newInstance(options);
  1. फ़्रैगमेंट का लेन-देन शुरू करें. फ़्रैगमेंट कंटेनर के कॉन्टेंट को नए फ़्रैगमेंट, streetViewFragment से बदलें. लेन-देन को बैक स्टैक में जोड़ें, ताकि 'वापस जाएं' बटन दबाने पर, उपयोगकर्ता SupportMapFragment पर वापस जा सके और ऐप्लिकेशन बंद न हो:
getSupportFragmentManager().beginTransaction()
       .replace(R.id.fragment_container,
               streetViewFragment)
       .addToBackStack(null).commit();
  1. setPoiClick(). को कॉल करने के बाद, onMapReady() में setInfoWindowClickToPanorama(mMap) को कॉल करें
  2. ऐप्लिकेशन चलाएं. किसी ऐसे शहर को ज़ूम इन करें जहां Street View की सुविधा उपलब्ध है. जैसे, माउंटेन व्यू (Google का मुख्यालय) और कोई पीओएस खोजें. जैसे, कोई पार्क. मार्कर लगाने और जानकारी विंडो दिखाने के लिए, पीओआई पर टैप करें. मार्कर की जगह के लिए Street View मोड में जाने के लिए, जानकारी वाली विंडो पर टैप करें. मैप फ़्रैगमेंट पर वापस जाने के लिए, 'वापस जाएं' बटन दबाएं.

Android ऐप्लिकेशन में Google Street View

7. सॉल्यूशन कोड

Wander समाधान कोड.

8. कोडिंग चैलेंज

समस्या: अगर आपने किसी ऐसी जगह पर मौजूद पीओआई की जानकारी वाली विंडो पर टैप किया है जहां स्ट्रीट व्यू की सुविधा उपलब्ध नहीं है, तो आपको काली स्क्रीन दिखेगी.

  • यह देखने के लिए कि किसी इलाके में Street View उपलब्ध है या नहीं, StreetViewPanorama.OnStreetViewPanoramaChangeListener के साथ OnStreetViewPanomaraReady कॉलबैक लागू करें.
  • अगर चुने गए इलाके में Street View की सुविधा उपलब्ध नहीं है, तो मैप फ़्रैगमेंट पर वापस जाएं और गड़बड़ी दिखाएं.

9. खास जानकारी

  • Maps API का इस्तेमाल करने के लिए, आपको Google API कंसोल से एपीआई पासकोड की ज़रूरत होगी.
  • Android Studio में, Google Maps Activity टेंप्लेट का इस्तेमाल करने पर, ऐप्लिकेशन के लेआउट में एक SupportMapFragment के साथ Activity जनरेट होता है. यह टेंप्लेट, ऐप्लिकेशन मेनिफ़ेस्ट में ACCESS_FINE_PERMISSION को भी जोड़ता है. साथ ही, आपकी गतिविधि में OnMapReadyCallback को लागू करता है और ज़रूरी onMapReady() तरीके को बदलता है.

रनटाइम के दौरान, GoogleMap के मैप टाइप को बदलने के लिए, GoogleMap.setMapType() तरीके का इस्तेमाल करें. Google मैप, इनमें से किसी भी तरह का मैप हो सकता है:

  • सामान्य: सामान्य सड़क का मैप. इसमें सड़कें, इंसानों की बनाई हुई कुछ चीज़ें, और नदियां जैसी अहम प्राकृतिक चीज़ें दिखाई गई हैं. सड़क और जगह के लेबल भी दिखते हैं.
  • हाइब्रिड: इसमें सैटलाइट से ली गई फ़ोटो के डेटा के साथ-साथ सड़क के मैप भी शामिल होते हैं. सड़क और जगह के लेबल भी दिखते हैं.
  • सैटलाइट: फ़ोटोग्राफ़ का डेटा. सड़क और सुविधाओं के लेबल नहीं दिख रहे हैं.
  • मैदान: टोपोग्राफ़िक डेटा. इस मैप में रंग, कंटूर लाइनें, लेबल, और पर्सपेक्टिव शेडिंग शामिल हैं. कुछ सड़कें और लेबल भी दिखते हैं.
  • कोई नहीं**:** कोई मैप नहीं.

Google Maps के बारे में जानकारी:

  • मार्कर, किसी खास भौगोलिक जगह के बारे में जानकारी देने वाला इंडिकेटर होता है.
  • टैप करने पर, मार्कर डिफ़ॉल्ट रूप से एक जानकारी वाली विंडो दिखाता है. इसमें जगह की जानकारी होती है.
  • डिफ़ॉल्ट रूप से, लोकप्रिय जगहें (पीओआई) बेस मैप पर दिखती हैं. साथ ही, उनसे जुड़े आइकॉन भी दिखते हैं. दिलचस्पी की जगहों में पार्क, स्कूल, सरकारी इमारतें वगैरह शामिल हैं.
  • इसके अलावा, जब मैप का टाइप normal होता है, तब कारोबार के पीओएस (दुकानें, रेस्टोरेंट, होटल वगैरह) डिफ़ॉल्ट रूप से मैप पर दिखते हैं.
  • OnPoiClickListener का इस्तेमाल करके, दिलचस्पी की जगहों पर मिले क्लिक कैप्चर किए जा सकते हैं.
  • स्टाइलिंग विज़र्ड का इस्तेमाल करके, Google Maps के लगभग सभी एलिमेंट के विज़ुअल में बदलाव किया जा सकता है. स्टाइलिंग विज़र्ड, एक JSON फ़ाइल जनरेट करता है. इस फ़ाइल को setMapStyle() तरीके का इस्तेमाल करके, Google मैप में पास किया जाता है.
  • मार्कर को पसंद के मुताबिक बनाया जा सकता है. इसके लिए, डिफ़ॉल्ट रंग बदला जा सकता है या डिफ़ॉल्ट मार्कर आइकॉन को पसंद के मुताबिक इमेज से बदला जा सकता है.

अन्य ज़रूरी जानकारी:

  • किसी इमेज को किसी भौगोलिक जगह पर सेट करने के लिए, ग्राउंड ओवरले का इस्तेमाल करें.
  • इमेज, मीटर में इमेज का साइज़, और इमेज की पोज़िशन तय करने के लिए, GroundOverlayOptions ऑब्जेक्ट का इस्तेमाल करें. मैप पर ओवरले सेट करने के लिए, इस ऑब्जेक्ट को GoogleMap.addGroundOverlay() तरीके से पास करें.
  • अगर आपके ऐप्लिकेशन के पास ACCESS_FINE_LOCATION की अनुमति है, तो mMap.setMyLocationEnabled(true) तरीके का इस्तेमाल करके जगह की जानकारी ट्रैक करने की सुविधा चालू की जा सकती है.
  • Google Street View, कवरेज वाले पूरे इलाके में, तय की गई सड़कों से 360 डिग्री पैनोरमिक व्यू दिखाता है.
  • नया स्ट्रीट व्यू फ़्रैगमेंट बनाने के लिए, StreetViewPanoramaFragment.newInstance() तरीके का इस्तेमाल करें.
  • व्यू के विकल्प तय करने के लिए, StreetViewPanoramaOptions ऑब्जेक्ट का इस्तेमाल करें. ऑब्जेक्ट को newInstance() तरीके में पास करें.

10. ज़्यादा जानें

इससे जुड़े कॉन्सेप्ट का दस्तावेज़, 9.1: Google Maps API में मौजूद है.

Android डेवलपर का दस्तावेज़:

रेफ़रंस के लिए दस्तावेज़:

11. होमवर्क

इस सेक्शन में, उन छात्र-छात्राओं के लिए होमवर्क के संभावित असाइनमेंट की सूची दी गई है जो किसी शिक्षक के कोर्स के हिस्से के तौर पर इस कोडलैब पर काम कर रहे हैं. शिक्षक के पास ये विकल्प होते हैं:

  • अगर ज़रूरी हो, तो होमवर्क असाइन करें.
  • छात्र-छात्राओं को बताएं कि होमवर्क असाइनमेंट कैसे सबमिट किए जाते हैं.
  • होमवर्क असाइनमेंट को ग्रेड दें.

शिक्षक इन सुझावों का इस्तेमाल अपनी ज़रूरत के हिसाब से कर सकते हैं. साथ ही, वे चाहें, तो कोई दूसरा होमवर्क भी दे सकते हैं.

अगर आपको यह कोडलैब खुद से पूरा करना है, तो अपनी जानकारी की जांच करने के लिए, इन होमवर्क असाइनमेंट का इस्तेमाल करें.

ऐप्लिकेशन बनाना और उसे चलाना

  1. Google Maps Activity टेंप्लेट का इस्तेमाल करके एक नया ऐप्लिकेशन बनाएं. इससे ऐप्लिकेशन लॉन्च होने पर Google Maps लोड हो जाता है.
  2. Google मैप लोड होने के बाद, कैमरे को अपने स्कूल, घर या किसी ऐसी जगह पर ले जाएं जो आपके लिए ज़रूरी हो.
  3. मैप पर दो मार्कर जोड़ें. एक मार्कर आपके स्कूल की जगह पर और दूसरा आपके घर या किसी अन्य जगह पर होना चाहिए.
  4. डिफ़ॉल्ट रंग बदलकर या डिफ़ॉल्ट मार्कर आइकॉन को पसंद के मुताबिक इमेज से बदलकर, मार्कर आइकॉन को पसंद के मुताबिक बनाएं.

अहम जानकारी: onMapReady (GoogleMap googleMap) दस्तावेज़ देखें.

इन सवालों के जवाब दें

Question 1

जब मैप लोड हो जाता है और ऐप्लिकेशन में इस्तेमाल करने के लिए तैयार हो जाता है, तो किस तरीके को कॉल किया जाता है ?

दूसरा सवाल

अपने ऐप्लिकेशन में Google Maps को शामिल करने के लिए, Android के किन कॉम्पोनेंट का इस्तेमाल किया जा सकता है ?

  • MapView और MapFragment
  • MapFragment और MapActivity
  • MapView और MapActivity
  • सिर्फ़ MapFragment

तीसरा सवाल

Google Maps Android API, किस तरह के मैप उपलब्ध कराता है?

  • सामान्य, हाइब्रिड, इलाके, सैटलाइट, और रोडमैप
  • सामान्य, हाइब्रिड, इलाके, सैटलाइट, और "कोई नहीं"
  • हाइब्रिड, इलाके, सैटलाइट, रोडमैप, और "कोई नहीं"
  • सामान्य, भू-भाग, सैटलाइट, इमेजमैप, और "कोई नहीं"

Question 4

किसी लोकप्रिय जगह (पीओआई) पर क्लिक करने की सुविधा जोड़ने के लिए, कौनसे इंटरफ़ेस का इस्तेमाल किया जाता है?

  • GoogleMap.OnPoiListener
  • GoogleMap.OnPoiClickListener
  • GoogleMap.OnPoiClick
  • GoogleMap.OnPoiClicked

ग्रेडिंग के लिए अपना ऐप्लिकेशन सबमिट करना

ग्रेड देने वालों के लिए दिशा-निर्देश

देखें कि ऐप्लिकेशन में ये सुविधाएं मौजूद हों:

  • ऐप्लिकेशन लॉन्च होने पर, Google Maps सही तरीके से दिखता है. इससे पता चलता है कि एपीआई पासकोड सही तरीके से जनरेट किया गया था.
  • Google Maps लोड होने के बाद, कैमरा छात्र या छात्रा के घर या स्कूल की जगह पर चला जाता है. कोड में, यह चरण onMapReady (GoogleMap googleMap) कॉलबैक तरीके में होना चाहिए.
  • मार्कर, छात्र या छात्रा के स्कूल और किसी दूसरी जगह पर दिखते हैं. जैसे, छात्र या छात्रा का घर.
  • दोनों मार्कर को पसंद के मुताबिक बनाया गया है. उदाहरण के लिए, मार्कर में डिफ़ॉल्ट लाल रंग के बजाय किसी दूसरे रंग का इस्तेमाल किया गया है या उनमें कस्टम आइकॉन का इस्तेमाल किया गया है.

12. अगला कोडलैब

ऐडवांस Android डेवलपमेंट ट्रेनिंग कोर्स में मौजूद सभी कोडलैब देखने के लिए, ऐडवांस Android डेवलपमेंट कोडलैब के लैंडिंग पेज पर जाएं.