अपने ऐप्लिकेशन में 3D मैप जोड़ना

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

न्यूयॉर्क शहर को दिखाने वाला 3D मैप

इस पेज पर, Android के लिए Maps 3D SDK का इस्तेमाल करके, Android ऐप्लिकेशन में सामान्य 3D मैप जोड़ने का तरीका बताया गया है. इस पेज पर दिए गए निर्देशों में यह माना गया है कि आपने सेटअप पेज पर दिए गए चरणों को पहले ही पूरा कर लिया है. साथ ही, आपके पास ये चीज़ें मौजूद हैं:

  • Maps 3D SDK for Android की सुविधा वाला Google Cloud प्रोजेक्ट
  • Android के लिए Maps 3D SDK के साथ इस्तेमाल करने के लिए कॉन्फ़िगर किया गया एपीआई पासकोड
  • Android Studio प्रोजेक्ट, जिसे Android के लिए Maps 3D SDK के साथ इस्तेमाल करने के लिए सेट अप किया गया हो

इन ज़रूरी शर्तों के बारे में ज़्यादा जानने के लिए, सेटअप देखें.

पहला चरण: Map3DView कॉम्पोनेंट जोड़ने के लिए, लेआउट फ़ाइल (activity_main.xml) को अपडेट करना

Map3DView कॉम्पोनेंट, ऐप्लिकेशन में 3D मैप रेंडर करने वाला व्यू है. यहां दिए गए चरणों में, कॉम्पोनेंट को जोड़ने और मैप की शुरुआती स्थिति को कॉन्फ़िगर करने का तरीका बताया गया है. इसमें कैमरे की पोज़िशन और उससे जुड़े एट्रिब्यूट शामिल हैं:

  1. अपनी मुख्य गतिविधि की लेआउट फ़ाइल खोलें. यह फ़ाइल आम तौर पर app/src/main/res/layout/activity_main.xml पर मौजूद होती है.

  2. रूट ConstraintLayout (या रूट लेआउट एलिमेंट) में, map3d एक्सएमएल नेमस्पेस जोड़ें:

    xmlns:map3d="http://schemas.android.com/apk/res-auto"
    
  3. डिफ़ॉल्ट <TextView> को मिटा दें, जो "Hello World!" दिखाता है.

  4. अपने लेआउट में Map3DView कॉम्पोनेंट जोड़ें. कैमरे की पोज़िशन और अन्य एट्रिब्यूट को पसंद के मुताबिक बनाया जा सकता है:

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:map3d="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"
      android:id="@+id/main"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:context=".MainActivity">
    
      <com.google.android.gms.maps3d.Map3DView
        android:id="@+id/map3dView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        map3d:mode="hybrid"
        map3d:centerLat="38.544012"
        map3d:centerLng="-107.670428"
        map3d:centerAlt="2427.6"
        map3d:heading="310"
        map3d:tilt="63"
        map3d:range="8266"
        map3d:roll="0"
        map3d:minAltitude="0"
        map3d:maxAltitude="1000000"
        map3d:minHeading="0"
        map3d:maxHeading="360"
        map3d:minTilt="0"
        map3d:maxTilt="90"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
    

दूसरा भाग: MainActivity.kt को अपडेट करना

यहां दिए गए तरीके से, पहले हिस्से में activity_main.xml फ़ाइल में जोड़े गए Map3DView कॉम्पोनेंट को शुरू किया जाता है. साथ ही, कॉम्पोनेंट के लाइफ़साइकल इवेंट मैनेज किए जाते हैं:

  1. अपनी MainActivity.kt फ़ाइल खोलें. यह फ़ाइल आम तौर पर app/src/main/java/com/example/yourpackagename/MainActivity.kt पर मौजूद होती है.

  2. Android के लिए Maps 3D SDK टूल के लिए ज़रूरी इंपोर्ट जोड़ें:

    import com.google.android.gms.maps3d.GoogleMap3D
    import com.google.android.gms.maps3d.Map3DView
    import com.google.android.gms.maps3d.OnMap3DViewReadyCallback
    
  3. OnMap3DViewReadyCallback लागू करने के लिए, MainActivity क्लास में बदलाव करें:

    class MainActivity : AppCompatActivity(), OnMap3DViewReadyCallback {
    
  4. Map3DView और GoogleMap3D के लिए वैरिएबल घोषित करें:

    private lateinit var map3DView: Map3DView
    private var googleMap3D: GoogleMap3D? = null
    
  5. onCreate तरीके में, setContentView(...) और ViewCompat.setOnApplyWindowInsetsListener ब्लॉक के बाद, map3DView को शुरू करें, इसके onCreate लाइफ़साइकल के तरीके को कॉल करें, और मैप के लिए एसिंक्रोनस तरीके से अनुरोध करें:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_main)
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }
    
        map3DView = findViewById(R.id.map3dView)
        map3DView.onCreate(savedInstanceState)
        map3DView.getMap3DViewAsync(this)
    }
    
  6. onMap3DViewReady वाले तरीके को बदलें. इस कॉलबैक को तब ट्रिगर किया जाता है, जब मैप का इस्तेमाल किया जा सकता है:

    override fun onMap3DViewReady(googleMap3D: GoogleMap3D) {
        // Interact with the googleMap3D object here
        this.googleMap3D = googleMap3D
        // You can now make calls to the googleMap3D object, e.g.,
        // googleMap3D.cameraController.flyTo(camera { ... })
    }
    
  7. अपनी गतिविधि से लाइफ़साइकल इवेंट को Map3DView पर फ़ॉरवर्ड करें. इसके लिए, Map3DView में ये ओवरराइड जोड़ें:MainActivity

    override fun onStart() {
        super.onStart()
        map3DView.onStart()
    }
    
    override fun onResume() {
        super.onResume()
        map3DView.onResume()
    }
    
    override fun onPause() {
        map3DView.onPause()
        super.onPause()
    }
    
    override fun onStop() {
        map3DView.onStop()
        super.onStop()
    }
    
    override fun onDestroy() {
        map3DView.onDestroy()
        super.onDestroy()
    }
    
    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        map3DView.onSaveInstanceState(outState)
    }
    
    override fun onLowMemory() {
        super.onLowMemory()
        map3DView.onLowMemory()
    }
    

तीसरा भाग: Gradle और Run को सिंक करना

ऐप्लिकेशन के लेआउट और गतिविधि को अपडेट करने के बाद, अब ऐप्लिकेशन को बनाया और चलाया जा सकता है. इससे आपको 3D मैप व्यू दिखेगा.

  1. अपने प्रोजेक्ट को Gradle के साथ सिंक करने के लिए, File > Sync Project with Gradle Files चुनें.

  2. अपने ऐप्लिकेशन को किसी एम्युलेटर या फ़िज़िकल डिवाइस पर बनाने और चलाने के लिए, चलाएं > चलाएं को चुनें.

अगर सब कुछ सही तरीके से कॉन्फ़िगर किया गया है, तो आपको अपने ऐप्लिकेशन में 3D मैप दिखेगा. यह मैप, activity_main.xml में दिए गए निर्देशांकों के आस-पास दिखेगा.

अगले चरण

अब आपने अपने ऐप्लिकेशन में बुनियादी 3D मैप जोड़ लिया है. इसलिए, Android के लिए Maps 3D SDK की ज़्यादा बेहतर सुविधाओं का इस्तेमाल किया जा सकता है. जैसे, कैमरे के पाथ के ऐनिमेशन, 3D मार्कर या पॉलीगॉन.