एक मैप जोड़ें

प्लैटफ़ॉर्म चुनें: Android iOS JavaScript

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

  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 देखें.

बुनियादी चरण:

  1. SDK टूल पाने, एपीआई पासकोड हासिल करने, और ज़रूरी फ़्रेमवर्क जोड़ने के लिए, यह तरीका अपनाएं:

    1. Google Cloud Console में सेट अप करें

    2. एपीआई पासकोड का इस्तेमाल करना

    3. Android Studio प्रोजेक्ट सेट अप करना

  2. उस गतिविधि में कोई SupportMapFragment ऑब्जेक्ट जोड़ें जो मैप को हैंडल करेगा. आपके पास फ़्रैगमेंट को स्टैटिक या डाइनैमिक तरीके से जोड़ने का विकल्प है.

  3. OnMapReadyCallback इंटरफ़ेस लागू करें.

  4. लेआउट फ़ाइल को कॉन्टेंट व्यू के तौर पर सेट करें.

  5. अगर आपने फ़्रैगमेंट को स्टैटिक रूप से जोड़ा है, तो फ़्रैगमेंट के लिए हैंडल पाएं.

  6. कॉलबैक रजिस्टर करें.

  7. GoogleMap ऑब्जेक्ट के लिए हैंडल पाएं.

SupportMapफ़्रैगमेंट ऑब्जेक्ट जोड़ें

अपने ऐप्लिकेशन में SupportMapFragment ऑब्जेक्ट को स्टैटिक या डाइनैमिक तरीके से जोड़ा जा सकता है. सबसे आसान तरीका है इसे स्टैटिक तरीके से जोड़ना. अगर आपने फ़्रैगमेंट को डाइनैमिक रूप से जोड़ा है, तो आपके पास उस फ़्रैगमेंट पर दूसरी कार्रवाइयां करने का विकल्प होगा, जैसे कि रनटाइम के दौरान फ़्रैगमेंट को हटाना और बदलना.

स्टैटिक रूप से फ़्रैगमेंट जोड़ने के लिए

मैप को हैंडल करने वाली गतिविधि की लेआउट फ़ाइल में:

  1. fragment एलिमेंट जोड़ें.
  2. नाम का एलान जोड़ें xmlns:map="http://schemas.android.com/apk/res-auto". इससे, maps कस्टम एक्सएमएल एट्रिब्यूट का इस्तेमाल किया जा सकता है.
  3. fragment एलिमेंट में, android:name एट्रिब्यूट को com.google.android.gms.maps.SupportMapFragment पर सेट करें.
  4. 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"/>

डाइनैमिक तौर पर फ़्रैगमेंट जोड़ने के लिए

गतिविधि में:

  1. SupportMapFragment इंस्टेंस बनाएं.
  2. गतिविधि में फ़्रैगमेंट जोड़ने वाला लेन-देन करें. ज़्यादा जानकारी के लिए, फ़्रैगमेंट ट्रांज़ैक्शन देखें.

उदाहरण के लिए:

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);
}

      

फ़्रैगमेंट के लिए हैंडल पाएं और कॉलबैक रजिस्टर करें

  1. फ़्रैगमेंट को हैंडल करने के लिए, FragmentManager.findFragmentById तरीके को कॉल करें और उसे अपनी लेआउट फ़ाइल में फ़्रैगमेंट के रिसॉर्स आईडी को पास करें. अगर आपने फ़्रैगमेंट को डाइनैमिक तौर पर जोड़ा है, तो इस चरण को छोड़ दें, क्योंकि आपने हैंडल को पहले ही वापस पा लिया है.

  2. फ़्रैगमेंट पर कॉलबैक सेट करने के लिए, 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"));
}

      

स्क्रीनशॉट, जिसमें नल आइलैंड पर मैप और मार्कर दिख रहे हैं.

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

पूरी गतिविधि के लिए कोड देखें:

पूरी गतिविधि देखें


आगे क्या करना है

इन चरणों को पूरा करने के बाद, मैप की सेटिंग कॉन्फ़िगर की जा सकती हैं.