एक मैप जोड़ें

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

यह विषय बताता है कि ऐप्लिकेशन इंस्टॉल करने के बाद, 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 देखें.

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

  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.मैप संसाधन आईडी (@+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 ऑब्जेक्ट के लिए हैंडल पाएं

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

      

शून्य द्वीप पर केंद्रित मैप और मार्कर का स्क्रीनशॉट.

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

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

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


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

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