इस विषय में, Android ऐप्लिकेशन में सामान्य मैप जोड़ने का तरीका बताया गया है. इसके लिए, आपको Android के लिए Maps SDK का इस्तेमाल करने के लिए, प्रोजेक्ट को कॉन्फ़िगर करना होगा. मैप जोड़ने के बाद, मैप का टाइप और सुविधाएं बदली जा सकती हैं.
खास जानकारी
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 प्रोजेक्ट को खाली प्रोजेक्ट टेंप्लेट से बनाया गया था. इसके बाद, इसे प्रोजेक्ट कॉन्फ़िगरेशन गाइड के आधार पर अपडेट किया गया था. इस विषय में दिए गए चरणों को पूरा करने के बाद, प्रोजेक्ट टेंप्लेट के आधार पर आपका कोड अलग हो सकता है.
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")); }

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