ArcGIS einrichten
Anleitung zum Verwenden des ArcGIS Maps SDK for Kotlin über MapConductor. Fügen Sie das Esri-Repository hinzu und übergeben Sie den API-Schlüssel über das Manifest. Sowohl 2D- als auch 3D-Ansichten werden unterstützt.
Bevor Sie beginnen
API-Schlüssel abrufen
- Erstellen Sie ein ArcGIS-Entwicklerkonto.
- Öffnen Sie das ArcGIS Developer Dashboard.
- Erstellen Sie eine Anwendung und geben Sie einen API-Schlüssel mit den erforderlichen Bereichen aus.
Esri-Repository hinzufügen
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
// Esri public repository for ArcGIS Maps SDK
maven {
url = uri("https://esri.jfrog.io/artifactory/arcgis")
}
}
}Secrets Gradle Plugin installieren
Mechanismus, um zu vermeiden, dass der Schlüssel in die Quellcodeverwaltung gelangt. Das Plug-in liest secrets.properties und fügt den Wert beim Build in die Platzhalter in AndroidManifest.xml ein.
plugins {
id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") version "2.0.1" apply false
}Abhängigkeiten hinzufügen
Auch auf ArcGIS-Seite wird eine BOM verwendet. Das Toolkit für Compose ist ebenfalls erforderlich.
plugins {
// ... other plugins
id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
}
dependencies {
// ArcGIS Maps SDK
implementation(platform("com.esri:arcgis-maps-kotlin-toolkit-bom:300.1.0"))
implementation("com.esri:arcgis-maps-kotlin:300.1.0")
implementation("com.esri:arcgis-maps-kotlin-toolkit-geoview-compose")
implementation("com.esri:arcgis-maps-kotlin-toolkit-authentication")
// MapConductor BOM pins every module below
implementation(platform("com.mapconductor:mapconductor-bom:1.3.1"))
implementation("com.mapconductor:core")
implementation("com.mapconductor:for-arcgis")
}Manifest und Schlüssel konfigurieren
<manifest>
<!-- Add internet and location permissions -->
<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>
<!-- ArcGIS API Key -->
<meta-data
android:name="ARCGIS_API_KEY"
android:value="${ARCGIS_API_KEY}" />
</application>
</manifest>ARCGIS_API_KEY=your_actual_arcgis_api_key_here
Lizenz konfigurieren (nur Produktion)
Für die reine grundlegende Kartenanzeige ist dies nicht erforderlich. Für die Produktionsverteilung konfigurieren Sie die Lizenz gemäß der Dokumentation von Esri.
// In your Application class or MainActivity
// ArcGISEnvironment.setLicense("your_license_key_here") // Optional for basic usePRÜFEN
Was Sie sehen sollten
Wenn die ArcGIS-Karte angezeigt wird und Zoomen, Schwenken und (bei 3D-Ansicht) Kippen funktionieren, sind Sie fertig.
@Composable
fun TestArcGIS(modifier: Modifier = Modifier) {
val mapState = rememberArcGISMapViewState(
cameraPosition = MapCameraPosition(
position = GeoPoint(35.6762, 139.6503),
zoom = 12.0,
),
)
// If the map appears, the setup is correct.
// ArcGISMapView is the 3D scene view; ArcGISMapView2D shares the same state.
ArcGISMapView(modifier = modifier, state = mapState)
}Kartendesigns
ArcGISDesign unterstützt Basiskarten von Esri. Dies ist nur eine Auswahl, tatsächlich gibt es noch weitere Konstanten.
Fehlerbehebung
Karte wird nicht geladen
- Überprüfen Sie, ob der API-Schlüssel in secrets.properties korrekt ist.
- Überprüfen Sie im Dashboard, ob der Schlüssel über die erforderlichen Bereiche verfügt.
Lizenzfehler tritt auf
- Für die Produktionsverteilung konfigurieren Sie die Lizenz gemäß der Dokumentation von Esri.
Der Build schlägt fehl
- Überprüfen Sie, ob Koordinaten und Version des Map SDK mit den Angaben im Versionskatalog übereinstimmen.
- Überprüfen Sie, ob die Repository-Definition in settings.gradle.kts vorhanden ist (wenn repositoriesMode auf FAIL_ON_PROJECT_REPOS eingestellt ist, werden die repositories auf Modulseite ignoriert).
- Wenn mehrere Karten-SDKs gleichzeitig eingebunden sind, prüfen Sie mit ./gradlew :app:dependencies, ob es Abhängigkeitskonflikte gibt.
Weiter
ArcGISMapView ist für 3D, ArcGISMapView2D für 2D. Da beide dasselbe Zustandsobjekt nutzen, können sie zur Laufzeit umgeschaltet werden.