दस्तावेज़ / सेटअप / Android / Google Maps

Google Maps का सेटअप

MapConductor से Google Maps SDK for Android का उपयोग करने की प्रक्रिया। API कुंजी प्राप्त करने से लेकर, Secrets Gradle Plugin के साथ कुंजी को इंजेक्ट करने और GoogleMapView प्रदर्शित होने तक इसमें शामिल है।

MODULE
com.mapconductor:for-googlemaps
API KEY
आवश्यक
VIEW
GoogleMapView
TIME
15 मिनट
वही प्रोवाइडर, दूसरे प्लेटफ़ॉर्मiOSReact

शुरू करने से पहले

Android विकास वातावरण (Android Studio)
Google Cloud Console खाता
Google Cloud प्रोजेक्ट में Maps SDK for Android सक्षम है
STEP 01

API कुंजी प्राप्त करें

  1. Google Cloud Console पर जाएं।
  2. एक नया प्रोजेक्ट बनाएं या कोई मौजूदा चुनें।
  3. Maps SDK for Android को सक्षम करें।
  4. "प्रमाणीकरण जानकारी" से API कुंजी बनाएं।
  5. कुंजी को ऐप के पैकेज नाम और SHA-1 प्रमाणपत्र फिंगरप्रिंट तक सीमित करें।
डिबग बिल्ड और रिलीज़ बिल्ड में हस्ताक्षर प्रमाणपत्र अलग होते हैं, इसलिए SHA-1 को अलग-अलग पंजीकृत करने की आवश्यकता है।
STEP 02

Secrets Gradle Plugin जोड़ें

स्रोत प्रबंधन में कुंजी न रखने के लिए एक तंत्र है। प्लगइन secrets.properties को पढ़ता है और बिल्ड के समय AndroidManifest.xml के प्लेसहोल्डर में मान डालता है।

(root)/build.gradle.ktsKotlin
plugins {
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") version "2.0.1" apply false
}
STEP 03

निर्भरता जोड़ें

Google Maps SDK और MapConductor मॉड्यूल को ऐप में जोड़ें और Secrets Gradle Plugin लागू करें। MapConductor का संस्करण BOM तय करता है।

app/build.gradle.ktsKotlin
plugins {
    // ... other plugins
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
}

dependencies {
    // Google Maps SDK
    implementation("com.google.android.gms:play-services-maps:20.0.0")

    // MapConductor BOM pins every module below
    implementation(platform("com.mapconductor:mapconductor-bom:1.3.1"))

    implementation("com.mapconductor:core")
    implementation("com.mapconductor:for-googlemaps")
    // Optional: compose / icons / heatmap / marker-clustering / geojson / kml
}
STEP 04

मैनिफेस्ट और कुंजी कॉन्फ़िगर करें

मैनिफेस्ट में केवल प्लेसहोल्डर लिखें और वास्तविक मान secrets.properties में रखें। बिल्ड के समय प्लगइन इसे बदल देगा।

AndroidManifest.xmlXML
<manifest>
    <!-- Add location permissions -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application>
        <!-- Google Maps API Key -->
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="${GOOGLE_MAPS_API_KEY}" />
    </application>
</manifest>
secrets.propertiesProperties
GOOGLE_MAPS_API_KEY=your_actual_api_key
स्थान जानकारी का उपयोग न करने वाले ऐप्स में ACCESS_*_LOCATION की आवश्यकता नहीं है। टाइल प्राप्त करने के लिए केवल INTERNET की आवश्यकता होती है।
सावधानी
secrets.properties को वर्ज़न नियंत्रण में कमिट न करें। .gitignore में जोड़ने से दुर्घटनाएं रोकी जा सकती हैं। CI में पर्यावरण चर आदि के माध्यम से अलग सुरक्षित मार्ग से पास किया जाता है।
STEP 05

ProGuard / R8 कॉन्फ़िगर करें (यदि लागू हो)

यदि अस्पष्टीकरण सक्षम है, तो Play Services Maps की कक्षाओं को रखें।

proguard-rules.proProGuard
# Google Play Services
-keep class com.google.android.gms.maps.** { *; }
-keep interface com.google.android.gms.maps.** { *; }
-dontwarn com.google.android.gms.**

जाँच

आपको क्या दिखना चाहिए

इस स्क्रीन को बिल्ड और चलाएं, और यदि मानचित्र प्रकट होता है और ज़ूम और पैन काम करता है, तो सेटअप पूरा हो गया है।

TestGoogleMaps.ktJetpack Compose
@Composable
fun TestGoogleMaps(modifier: Modifier = Modifier) {
    val mapState = rememberGoogleMapViewState(
        cameraPosition = MapCameraPosition(
            position = GeoPoint(35.6762, 139.6503),
            zoom = 12.0,
        ),
    )

    // If the map appears, the setup is correct.
    GoogleMapView(modifier = modifier, state = mapState)
}

मैप डिज़ाइन

GoogleMapDesign Google के मानचित्र प्रकारों की प्रति है।

GoogleMapDesign
Notes
Normal
सामान्य सड़क मानचित्र (roadmap)
Satellite
उपग्रह चित्र
Hybrid
उपग्रह चित्र + सड़कें और लेबल
Terrain
भू-आकृति मानचित्र
None
बेस मानचित्र के बिना

समस्या निवारण

नक्शा प्रदर्शित नहीं हो रहा (ग्रे स्क्रीन)

  • secrets.properties में API कुंजी सही है या नहीं जाँचें।
  • Google Cloud Console में Maps SDK for Android सक्षम है या नहीं जाँचें।
  • कुंजी प्रतिबंध वास्तविक पैकेज नाम और SHA-1 से मेल खाते हैं या नहीं जाँचें।

लॉग में API कुंजी त्रुटि आ रही है

  • कुंजी मान और समाप्ति तिथि की जाँच करें।
  • Console की प्रतिबंध सेटिंग्स की समीक्षा करें।

बिल्ड विफल हो रहा है

  • नक्शा SDK के निर्देशांक और संस्करण संस्करण कैटलॉग के विनिर्देश से मेल खाते हैं या नहीं जाँचें।
  • settings.gradle.kts में रिपॉजिटरी परिभाषा है या नहीं जाँचें (repositoriesMode FAIL_ON_PROJECT_REPOS है, तो मॉड्यूल के repositories को नजरअंदाज किया जाता है)।
  • यदि आपने एक साथ कई नक्शा SDK जोड़े हैं, तो निर्भरता संघर्ष है या नहीं जाँचने के लिए ./gradlew :app:dependencies चलाएँ।

आगे

GoogleMapView दिखाई देने पर, Marker, Polyline, Circle आदि ओवरले को सामान्य API से लिखा जा सकता है। प्रदाता बदलने पर भी, वह कोड नहीं बदलता है।