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