इस विषय में, Android ऐप्लिकेशन में बुनियादी मैप जोड़ने का तरीका बताया गया है. इसके लिए, आपको Maps SDK for Android का इस्तेमाल करने के लिए प्रोजेक्ट को कॉन्फ़िगर करना होगा. मैप जोड़ने के बाद, आप मैप का टाइप और सुविधाएं बदल सकते हैं.
खास जानकारी
Maps SDK for Android में कई क्लास उपलब्ध हैं. इनका इस्तेमाल करके, आपका ऐप्लिकेशन मैप के लाइफ़साइकल, फ़ंक्शनैलिटी, और डेटा को मैनेज कर सकता है. ये क्लास, Android यूज़र इंटरफ़ेस (यूआई) मॉडल के आधार पर उपयोगकर्ता के इंटरैक्शन को सपोर्ट करती हैं. जैसे, मैप की शुरुआती स्थिति सेट करना और रनटाइम के दौरान उपयोगकर्ता के जेस्चर इनपुट का जवाब देना.
मैप को मैनेज करने के लिए मुख्य इंटरफ़ेस और क्लास:
GoogleMap— यह मैप की बुनियादी सुविधाओं और डेटा को मैनेज करने का एंट्री पॉइंट है. आपका ऐप्लिकेशन,GoogleMapऑब्जेक्ट को सिर्फ़ तब ऐक्सेस कर सकता है, जब उसेSupportMapFragmentयाMapViewऑब्जेक्ट से वापस पाया गया हो.SupportMapFragment— यह फ़्रैगमेंट है जो ऑब्जेक्ट के लाइफ़साइकल को मैनेज करने के लिए है.GoogleMapMapView— यह व्यू किसीGoogleMapऑब्जेक्ट के लाइफ़साइकल को मैनेज करने के लिए है.OnMapReadyCallback— यह एक कॉलबैक इंटरफ़ेस है, जोGoogleMapऑब्जेक्ट के लिए इवेंट और उपयोगकर्ता के इंटरैक्शन को मैनेज करता है.
GoogleMap ऑब्जेक्ट, ये कार्रवाइयां अपने-आप करता है:
- Google Maps सेवा से कनेक्ट करना.
- मैप की टाइलें डाउनलोड करना.
- डिवाइस की स्क्रीन पर टाइलें दिखाना.
- पैन और ज़ूम जैसे अलग-अलग कंट्रोल दिखाना.
- मैप को घुमाकर और ज़ूम इन या आउट करके, पैन और ज़ूम जेस्चर का जवाब देना.
अपने ऐप्लिकेशन में GoogleMap ऑब्जेक्ट का इस्तेमाल करने के लिए, आपको मैप के लिए कंटेनर ऑब्जेक्ट के तौर पर SupportMapFragment या MapView ऑब्जेक्ट का इस्तेमाल करना होगा. इसके बाद, कंटेनर से GoogleMap ऑब्जेक्ट वापस पाना होगा. कंटेनर क्लास, Android फ़्रैगमेंट या व्यू से ली गई हैं. इसलिए, ये अपने Android बेस क्लास की लाइफ़साइकल मैनेजमेंट और यूज़र इंटरफ़ेस (यूआई) की सुविधाएं, मैप को उपलब्ध कराती हैं.
SupportMapFragment क्लास, GoogleMap ऑब्जेक्ट के लिए ज़्यादा मॉडर्न और सामान्य कंटेनर है.
कोड देखना
यहां दिया गया कोड, Java की उस पूरी ऐक्टिविटी से लिया गया है जिसका इस्तेमाल इस विषय में, किसी फ़्रैगमेंट को स्टैटिक तरीके से जोड़ने के लिए किया गया है. Android प्रोजेक्ट, खाली प्रोजेक्ट टेम्पलेट से बनाया गया था. इसके बाद, प्रोजेक्ट कॉन्फ़िगरेशन गाइड के आधार पर इसे अपडेट किया गया. इस विषय में बताए गए चरणों को पूरा करने के बाद, प्रोजेक्ट टेंप्लेट के आधार पर आपका कोड अलग हो सकता है.
package com.example.mapsetup; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; // Implement OnMapReadyCallback. public class MainActivity extends AppCompatActivity implements OnMapReadyCallback { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set the layout file as the content view. setContentView(R.layout.activity_main); // Get a handle to the fragment and register the callback. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); } // Get a handle to the GoogleMap object and display marker. @Override public void onMapReady(GoogleMap googleMap) { googleMap.addMarker(new MarkerOptions() .position(new LatLng(0, 0)) .title("Marker")); } }
मैप जोड़ना
इस सेक्शन में, मैप कंटेनर के तौर पर फ़्रैगमेंट का इस्तेमाल करके, बुनियादी मैप जोड़ने का तरीका बताया गया है. हालांकि, इसके बजाय व्यू का इस्तेमाल भी किया जा सकता है. उदाहरण के लिए, Github पर RawMapViewDemoActivity देखें.
बुनियादी चरण:
एसडीके पाने, एपीआई पासकोड हासिल करने, और ज़रूरी फ़्रेमवर्क जोड़ने के लिए, यहां दिया गया तरीका अपनाएं:
उस ऐक्टिविटी में
SupportMapFragmentऑब्जेक्ट जोड़ें जो मैप को मैनेज करेगी. फ़्रैगमेंट को स्टैटिक या डाइनैमिक तरीके से जोड़ा जा सकता है.OnMapReadyCallbackइंटरफ़ेस लागू करें.लेआउट फ़ाइल को कॉन्टेंट व्यू के तौर पर सेट करें.
अगर आपने फ़्रैगमेंट को स्टैटिक तरीके से जोड़ा है, तो फ़्रैगमेंट का हैंडल पाएं.
कॉलबैक रजिस्टर करें.
GoogleMapऑब्जेक्ट का हैंडल पाएं.
SupportMapFragment ऑब्जेक्ट जोड़ना
अपने ऐप्लिकेशन में SupportMapFragment ऑब्जेक्ट को स्टैटिक या डाइनैमिक तरीके से जोड़ा जा सकता है.
इसे स्टैटिक तरीके से जोड़ना सबसे आसान है. अगर फ़्रैगमेंट को डाइनैमिक तरीके से जोड़ा जाता है, तो फ़्रैगमेंट पर अतिरिक्त कार्रवाइयां की जा सकती हैं. जैसे, रनटाइम के दौरान उसे हटाना और बदलना.
किसी फ़्रैगमेंट को स्टैटिक तरीके से जोड़ना
उस ऐक्टिविटी की लेआउट फ़ाइल में जो मैप को मैनेज करेगी:
fragmentएलिमेंट जोड़ें.- नाम का एलान जोड़ें
xmlns:map="http://schemas.android.com/apk/res-auto". इससे,mapsकस्टम एक्सएमएल एट्रिब्यूट का इस्तेमाल किया जा सकता है. fragmentएलिमेंट में,android:nameएट्रिब्यूट कोcom.google.android.gms.maps.SupportMapFragmentपर सेट करें.fragmentएलिमेंट में,android:idएट्रिब्यूट जोड़ें और इसे R.id.map रिसॉर्स आईडी (@+id/map) पर सेट करें.
उदाहरण के लिए, यहां एक पूरी लेआउट फ़ाइल दी गई है, जिसमें fragment एलिमेंट शामिल है:
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
किसी फ़्रैगमेंट को डाइनैमिक तरीके से जोड़ना
ऐक्टिविटी में:
SupportMapFragmentइंस्टेंस बनाएं.- ऐसा ट्रांज़ैक्शन कमिट करें जो फ़्रैगमेंट को ऐक्टिविटी में जोड़ता है. ज़्यादा जानकारी के लिए, देखें फ़्रैगमेंट ट्रांज़ैक्शन.
उदाहरण के लिए:
Kotlin
val mapFragment = SupportMapFragment.newInstance() supportFragmentManager .beginTransaction() .add(R.id.my_container, mapFragment) .commit()
Java
SupportMapFragment mapFragment = SupportMapFragment.newInstance(); getSupportFragmentManager() .beginTransaction() .add(R.id.my_container, mapFragment) .commit();
OnMapReadyCallback इंटरफ़ेस लागू करना
ऐक्टिविटी के एलान को इस तरह अपडेट करें:
Kotlin
class MainActivity : AppCompatActivity(), OnMapReadyCallback { // ... }
Java
class MainActivity extends AppCompatActivity implements OnMapReadyCallback { // ... }
कॉन्टेंट व्यू सेट करना
अपनी ऐक्टिविटी के onCreate तरीके में, setContentView तरीके को कॉल करें और लेआउट फ़ाइल को कॉन्टेंट व्यू के तौर पर सेट करें.
उदाहरण के लिए, अगर लेआउट फ़ाइल का नाम main.xml है, तो:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main) }
Java
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }
फ़्रैगमेंट का हैंडल पाना और कॉलबैक रजिस्टर करना
फ़्रैगमेंट का हैंडल पाने के लिए,
FragmentManager.findFragmentByIdतरीके को कॉल करें और इसे अपनी लेआउट फ़ाइल में फ़्रैगमेंट का रिसॉर्स आईडी पास करें. अगर आपने फ़्रैगमेंट को डाइनैमिक तरीके से जोड़ा है, तो यह चरण छोड़ दें, क्योंकि आपने पहले ही हैंडल वापस पा लिया है.फ़्रैगमेंट पर कॉलबैक सेट करने के लिए,
getMapAsyncतरीके को कॉल करें.
उदाहरण के लिए, अगर आपने फ़्रैगमेंट को स्टैटिक तरीके से जोड़ा है, तो:
Kotlin
val mapFragment = supportFragmentManager .findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this)
Java
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this);
GoogleMap ऑब्जेक्ट का हैंडल पाना
GoogleMap ऑब्जेक्ट का हैंडल पाने के लिए, onMapReady कॉलबैक तरीके का इस्तेमाल करें. जब मैप, उपयोगकर्ता से इनपुट पाने के लिए तैयार होता है, तब कॉलबैक ट्रिगर होता है. यह GoogleMap क्लास का ऐसा नॉन-नल इंस्टेंस उपलब्ध कराता है जिसका इस्तेमाल, मैप को अपडेट करने के लिए किया जा सकता है.
इस उदाहरण में, onMapReady कॉलबैक, GoogleMap
ऑब्जेक्ट का हैंडल वापस पाता है. इसके बाद, मैप में एक मार्कर जोड़ा जाता है:
Kotlin
override fun onMapReady(googleMap: GoogleMap) { googleMap.addMarker( MarkerOptions() .position(LatLng(0.0, 0.0)) .title("Marker") ) }
Java
@Override public void onMapReady(GoogleMap googleMap) { googleMap.addMarker(new MarkerOptions() .position(new LatLng(0, 0)) .title("Marker")); }

ऐप्लिकेशन को सफलतापूर्वक बनाने और चलाने पर, यह Null Island (शून्य डिग्री अक्षांश और शून्य डिग्री देशांतर) पर मार्कर के साथ एक मैप दिखाएगा.
पूरी ऐक्टिविटी के लिए कोड देखें:
आगे क्या करना है
इन चरणों को पूरा करने के बाद, आप मैप की सेटिंग कॉन्फ़िगर कर सकते हैं .