इस विषय में, Android ऐप्लिकेशन में बुनियादी मैप जोड़ने का तरीका बताया गया है. इसके लिए, आपको Maps SDK for Android का इस्तेमाल करने के लिए, प्रोजेक्ट को कॉन्फ़िगर करना होगा. मैप जोड़ने के बाद, मैप का टाइप और सुविधाएं बदली जा सकती हैं.
खास जानकारी
Android के लिए Maps SDK, आपके ऐप्लिकेशन को कई क्लास उपलब्ध कराता है. इनका इस्तेमाल करके, मैप के लाइफ़साइकल, फ़ंक्शन, और डेटा को मैनेज किया जा सकता है. ये क्लास, Android के यूज़र इंटरफ़ेस (यूआई) मॉडल के आधार पर उपयोगकर्ता के इंटरैक्शन को सपोर्ट करती हैं. जैसे, मैप की शुरुआती स्थिति सेट करना और रनटाइम के दौरान उपयोगकर्ता के जेस्चर इनपुट का जवाब देना.
मैप को मैनेज करने के लिए मुख्य इंटरफ़ेस और क्लास:
GoogleMap— यह मैप की सुविधाओं और डेटा को मैनेज करने का एंट्री पॉइंट है. आपका ऐप्लिकेशन,GoogleMapऑब्जेक्ट को सिर्फ़ तब ऐक्सेस कर सकता है, जब उसेSupportMapFragmentयाMapViewऑब्जेक्ट से वापस पा लिया गया हो.SupportMapFragment— यहGoogleMapऑब्जेक्ट के लाइफ़साइकल को मैनेज करने के लिए एक फ़्रैगमेंट है.MapView— यहGoogleMapऑब्जेक्ट के लाइफ़साइकल को मैनेज करने के लिए एक व्यू है.OnMapReadyCallback— यह एक कॉलबैक इंटरफ़ेस है. यहGoogleMapऑब्जेक्ट के लिए इवेंट और उपयोगकर्ता के इंटरैक्शन को हैंडल करता है.
GoogleMap ऑब्जेक्ट, ये कार्रवाइयां अपने-आप करता है:
- Google Maps की सेवा से कनेक्ट किया जा रहा है.
- मैप टाइल डाउनलोड की जा रही हैं.
- डिवाइस की स्क्रीन पर टाइलें दिख रही हैं.
- इसमें पैन और ज़ूम जैसे अलग-अलग कंट्रोल दिखाए जाते हैं.
- मैप को घुमाकर और ज़ूम इन या आउट करके, पैन और ज़ूम करने के जेस्चर का जवाब देना.
अपने ऐप्लिकेशन में GoogleMap ऑब्जेक्ट का इस्तेमाल करने के लिए, आपको मैप के लिए कंटेनर ऑब्जेक्ट के तौर पर SupportMapFragment या MapView ऑब्जेक्ट का इस्तेमाल करना होगा. इसके बाद, कंटेनर से GoogleMap ऑब्जेक्ट को वापस पाना होगा. कंटेनर क्लास, Android फ़्रैगमेंट या व्यू से मिलती हैं. इसलिए, ये Android की बुनियादी क्लास की लाइफ़साइकल मैनेजमेंट और यूज़र इंटरफ़ेस (यूआई) की सुविधाएं, मैप को उपलब्ध कराती हैं.
SupportMapFragment क्लास, GoogleMap ऑब्जेक्ट के लिए ज़्यादा मॉडर्न और सामान्य कंटेनर है.
कोड देखना
यहां दिया गया कोड, इस विषय में इस्तेमाल की गई पूरी Java गतिविधि से लिया गया है. इसका इस्तेमाल, फ़्रैगमेंट को स्टैटिक तरीके से जोड़ने के लिए किया जाता है. Android प्रोजेक्ट को Empty project टेंप्लेट से बनाया गया था. इसके बाद, इसे प्रोजेक्ट कॉन्फ़िगरेशन गाइड के आधार पर अपडेट किया गया था. इस विषय में दिए गए चरणों को पूरा करने के बाद, आपका कोड प्रोजेक्ट टेंप्लेट के आधार पर अलग-अलग हो सकता है.
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")); }

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