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