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

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

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

पाठ्यक्रम के बारे में पूर्ण विवरण के लिए, बेहतर Android डेवलपमेंट अवलोकन देखें.

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

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

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

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

आपको इनकी जानकारी होनी चाहिए:

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

आप इन चीज़ों के बारे में जानेंगे

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

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

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

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

इस प्रैक्टिकल में आप Wander ऐप्लिकेशन बनाते हैं, जो Google मैप की स्टाइल में है. 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 पर की गई गतिविधि का टेंप्लेट शामिल है, जो मददगार टेंप्लेट कोड जनरेट करता है. टेंप्लेट कोड में एक google_maps_api.xml फ़ाइल शामिल होती है, जिसमें एक लिंक होता है. इसकी मदद से, एपीआई पासकोड हासिल करना आसान हो जाता है.

1.1 Maps टेंप्लेट की मदद से Wander प्रोजेक्ट बनाएं

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

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

google_maps_api**.xml**

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

activity_maps.xml

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

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

MapsActivity.java

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

1.2 API कुंजी प्राप्त करें

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

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

  1. यूआरएल को कॉपी करके किसी ब्राउज़र में चिपकाएं.
  2. Google API कंसोल में प्रोजेक्ट बनाने के लिए निर्देशों का पालन करें. दिए गए यूआरएल में मौजूद पैरामीटर की वजह से, एपीआई कंसोल 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. नई मेन्यू एक्सएमएल फ़ाइल बनाने के लिए, अपनी res डायरेक्ट्री पर राइट-क्लिक करें और नई > Android संसाधन फ़ाइल.
  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. एक नया LatLng ऑब्जेक्ट बनाएं, जिसका नाम home हो. LatLng ऑब्जेक्ट में, ब्राउज़र में Google Maps से मिले निर्देशांक इस्तेमाल करें.
  2. zoom नाम का एक float वैरिएबल बनाएं और वैरिएबल को अपनी पसंद के शुरुआती ज़ूम लेवल पर सेट करें. यहां दी गई सूची से आपको पता चलता है कि ज़ूम का हर लेवल किस लेवल की जानकारी दिखाता है:
  • 1: दुनिया
  • 5: भूखंड/महाद्वीप
  • 10: शहर
  • 15: सड़कें
  • 20: इमारतें
  1. अपना LatLng ऑब्जेक्ट और zoom वैरिएबल पास करके, CameraUpdateFactory.newLatLngZoom() का इस्तेमाल करके CameraUpdate ऑब्जेक्ट बनाएं. 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() तरीके में, जगह के निर्देशांक पर 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 पीओआई लिसनर जोड़ें

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

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

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

  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 पास करें. इस उदाहरण के लिए, 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 का इस्तेमाल करके, किसी जगह के बारे में ज़्यादा जानकारी दी जा सकती है. यह किसी जगह की ऐसी पैनोरामा फ़ोटो है जिसे नेविगेट किया जा सकता है.

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

4.1 स्थान ट्रैकिंग सक्षम करें

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

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

  1. AndroidManifest.xml फ़ाइल में, पुष्टि करें कि FINE_LOCATION की अनुमति पहले से मौजूद है. Android Studio ने यह अनुमति तब शामिल की थी, जब आपने Google Maps टेंप्लेट चुना था.
  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 सड़क दृश्य सक्षम करें

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

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

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

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

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

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

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

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

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

  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") {}

SupportMapफ़्रैगमेंट को SupportStreetViewपैनोरामा के साथ बदलें

  1. अगर मार्कर में टैग है, तो StreetViewPanoramaOptions ऑब्जेक्ट का इस्तेमाल करके, Street View पैनोरामा की जगह की जानकारी दें. ऑब्जेक्ट की position प्रॉपर्टी को पास-इन मार्कर की जगह पर सेट करें:
StreetViewPanoramaOptions options =
       new StreetViewPanoramaOptions().position(
               marker.getPosition());
  1. SupportStreetViewPanoramaFragment का एक नया इंस्टेंस बनाएं, जो आपके बनाए गए options ऑब्जेक्ट में पास हो रहा हो:
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. ऐप्लिकेशन चलाएं. ऐसे शहर पर ज़ूम करें जहां स्ट्रीट व्यू कवरेज मौजूद है, जैसे कि माउंटेन व्यू (Google के मुख्यालय का घर) और कोई लोकप्रिय जगह ढूंढें, जैसे कि पार्क. मार्कर लगाने और जानकारी विंडो दिखाने के लिए, लोकप्रिय जगह पर टैप करें. मार्कर की जगह के लिए Street View मोड इस्तेमाल करने के लिए, जानकारी विंडो पर टैप करें. मैप के फ़्रैगमेंट पर वापस जाने के लिए, 'वापस जाएं' बटन दबाएं.

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

7. समाधान कोड

Wander समाधान का कोड.

8. कोडिंग की चुनौती

चुनौती: अगर आपने किसी ऐसी जगह पर लोकप्रिय जगह की जानकारी विंडो पर टैप किया है जहां Street View कवरेज नहीं है, तो आपको ब्लैक स्क्रीन दिखेगी.

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

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

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

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

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

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

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

दूसरी अहम जानकारी:

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

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

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

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

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

11. होमवर्क

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

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

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

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

ऐप्लिकेशन बनाएं और चलाएं

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

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

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

पहला सवाल

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

दूसरा सवाल

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

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

तीसरा सवाल

Google Maps Android API किस तरह के मैप की सुविधा देता है?

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

चौथा सवाल

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

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

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

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

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

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

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

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