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

MapLibre का सेटअप

MapConductor से MapLibre Native Android का उपयोग करने की प्रक्रिया। MapLibre में स्वयं कोई API कुंजी नहीं है, और मानचित्र का रूप स्टाइल JSON के वितरण स्रोत द्वारा निर्धारित होता है। यह सबसे छोटे चरणों में चलने वाला प्रदाता है।

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

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

Android विकास वातावरण (Android Studio)
स्टाइल JSON का URL (डेमो टाइल, वाणिज्यिक सेवा, या स्वयं होस्ट किया गया)
STEP 01

टाइल का स्रोत तय करें

MapLibre एक रेंडरर है, टाइल प्रदाता नहीं। केवल कार्यक्षमता जाँच के लिए MapLibreDesign का डेमो स्टाइल पर्याप्त है, लेकिन उत्पादन में स्पष्ट रूप से वितरण स्रोत चुनने की आवश्यकता होती है।

  1. मुफ्त/समुदाय: OpenStreetMap आधारित टाइल, Protomaps (स्वयं होस्ट किया जा सकता है)
  2. वाणिज्यिक: MapTiler Cloud, Stadia Maps (दोनों में मुफ्त सीमा उपलब्ध है)
  3. स्वयं होस्ट किया गया: tileserver-gl आदि के साथ स्वयं वितरण
सावधानी
डेमो टाइल केवल कार्यक्षमता जाँच के लिए हैं। उत्पादन ट्रैफ़िक नहीं भेजना चाहिए। इसके अलावा, अधिकांश टाइल प्रदाता आकलन (जैसे: © OpenStreetMap contributors) की मांग करते हैं। उपयोग की शर्तों की जाँच करें और UI में प्रदर्शित करें।
STEP 02

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

MapLibre SDK Maven Central से प्राप्त किया जा सकता है, इसलिए अतिरिक्त रिपॉजिटरी सेटिंग की आवश्यकता नहीं है।

settings.gradle.ktsKotlin
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}
app/build.gradle.ktsKotlin
dependencies {
    // MapLibre Native Android SDK
    implementation("org.maplibre.gl:android-sdk:13.4.1")

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

    implementation("com.mapconductor:core")
    implementation("com.mapconductor:for-maplibre")
}
STEP 03

मेनिफेस्ट में अनुमतियाँ जोड़ें

कुंजी इंजेक्शन नहीं है, इसलिए केवल अनुमतियों की आवश्यकता है।

AndroidManifest.xmlXML
<manifest>
    <!-- Add internet permission for tile loading -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application>
        <!-- no key to inject for MapLibre -->
    </application>
</manifest>
स्थान जानकारी का उपयोग न करने वाले ऐप्स में ACCESS_*_LOCATION की आवश्यकता नहीं है। टाइल प्राप्त करने के लिए केवल INTERNET की आवश्यकता होती है।

जाँच

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

स्टाइल निर्दिष्ट करके मानचित्र प्रदर्शित करें। टाइल लोड हो जाएं, ज़ूम, पैन, रोटेशन काम करे, तो पूर्ण है।

TestMapLibre.ktJetpack Compose
@Composable
fun TestMapLibre(modifier: Modifier = Modifier) {
    val mapState = rememberMapLibreMapViewState(
        cameraPosition = MapCameraPosition(
            position = GeoPoint(35.6762, 139.6503),
            zoom = 12.0,
        ),
        mapDesign = MapLibreDesign.OpenMapTiles,
    )

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

मैप डिज़ाइन

MapLibreDesign स्टाइल JSON के URL को लपेटने वाला एक स्थिरांक है। अपने स्टाइल का उपयोग करते समय भी समान प्रकार बनाकर पास करें।

MapLibreDesign
Notes
DemoTiles
MapLibre आधिकारिक डेमो टाइल। बिना कुंजी के सबसे तेज़ चलता है
OsmBright / OsmBrightEn / OsmBrightJa
OSM Bright। लेबल की भाषा अलग
MapTilerTonerEn / MapTilerTonerJa
उच्च कंट्रास्ट वाला Toner स्टाइल
MapTilerBasicEn / MapTilerBasicJa
सूचना कम करने वाला Basic स्टाइल
OpenMapTiles
सामान्य OpenMapTiles स्टाइल

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

मानचित्र पूरी तरह सफेद है

  • यह जाँचता है कि क्या स्टाइल URL तक पहुँचा जा सकता है और क्या JSON मान्य है।
  • यह जाँचता है कि INTERNET अनुमति संलग्न है या नहीं।
  • Logcat में नेटवर्क या पार्सिंग त्रुटियों की जाँच करें।

केवल टाइल लोड नहीं हो रहे हैं

  • टाइल सर्वर का URL जाँचें।
  • यह जाँचें कि क्या आप मुफ्त सेवा की दर सीमा में नहीं हैं।
  • यदि आप वाणिज्यिक प्रदाता का उपयोग कर रहे हैं, तो जाँचें कि स्टाइल URL में डाली गई कुंजी मान्य है या नहीं।

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

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

आगे

वेक्टर टाइल रास्टर से हल्के होते हैं और रेंडरिंग भी तेज़ होता है। यदि ऑफ़लाइन उपयोग आवश्यक है तो टाइल कैशिंग पर विचार करें।