Android studio配置ArcGIS Runtime SDK for Android及地图展示实现
1.在线引入ArcGIS Runtime SDK for Android
打开总目录下的settings.gradle.kts文件,对文件中两处repositories {下添加
maven { url = uri("https://esri.jfrog.io/artifactory/arcgis") }
pluginManagement { repositories { maven { url = uri("https://maven.aliyun.com/repository/public") } maven { url = uri("https://maven.aliyun.com/repository/google") } maven { url = uri("https://esri.jfrog.io/artifactory/arcgis") } google { content { includeGroupByRegex("com\\.android.*") includeGroupByRegex("com\\.google.*") includeGroupByRegex("androidx.*") } } mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { maven { url = uri("https://maven.aliyun.com/repository/public") } maven { url = uri("https://maven.aliyun.com/repository/google") } maven { url = uri("https://esri.jfrog.io/artifactory/arcgis") } google() mavenCentral() } }
进入https://esri.jfrog.io/artifactory/arcgis网站,可以发现最新版本为100.15.6
依次打开总目录下的app文件夹——》src文件夹——》build.gradle.kts文件
对build.gradle.kts文件中dependencies {下添加
implementation("com.esri.arcgisruntime","arcgis-android","100.15.6")
dependencies { implementation("com.esri.arcgisruntime","arcgis-android","100.15.6") implementation(libs.appcompat) implementation(libs.material) implementation(libs.activity) implementation(libs.constraintlayout) testImplementation(libs.junit) androidTestImplementation(libs.ext.junit) androidTestImplementation(libs.espresso.core) }
2.arcgis开发者API 密钥凭据
在https://location.arcgis.com/注册esri账号
注意:该步骤必须使用在https://location.arcgis.com/网站中注册的账号
登录账号后,点击create developer credentials并选择API 密钥凭据
注意:新手推荐在后续步骤中对所有权限开放,否则会出现使用API 密钥凭据后地图不显示的问题
最终生成API密钥,将该密钥进行复制,为后续作准备
3.地图显示实现
依次打开总目录下的app文件夹——》src文件夹——》main文件夹——》AndroidManifest.xml
文件,对文件中代码
下添加
下添加地图视图控件代码
与此同时也打开修改对应Java文件夹中的MainActivity文件
package com.example.androidgistest; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import com.esri.arcgisruntime.ArcGISRuntimeEnvironment; import com.esri.arcgisruntime.mapping.ArcGISMap; import com.esri.arcgisruntime.mapping.BasemapStyle; import com.esri.arcgisruntime.mapping.Viewpoint; import com.esri.arcgisruntime.mapping.view.MapView; public class MainActivity extends AppCompatActivity { MapView mMapView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ArcGISRuntimeEnvironment.setApiKey("arcgis开发者API密钥凭证"); mMapView = findViewById(R.id.mapview); mMapView.setAttributionTextVisible(false);//去logo ArcGISMap map = new ArcGISMap(BasemapStyle.ARCGIS_TOPOGRAPHIC); mMapView.setMap(map); mMapView.setViewpoint(new Viewpoint(34.056295, -117.195800, 10000)); } @Override protected void onPause() { mMapView.pause(); super.onPause(); } @Override protected void onResume() { super.onResume(); mMapView.resume(); } @Override protected void onDestroy() { mMapView.dispose(); super.onDestroy(); } }
注意:代码中“arcgis开发者API密钥凭证”为第二步所获取的
ArcGISRuntimeEnvironment.setApiKey("arcgis开发者API密钥凭证");
依次打开总目录下的app文件夹——》build.gradle.kts文件
因设备sdk版本低
将build.gradle.kts文件中minsdk设置为26(根据自己设备情况适当缩小版本以保证程序成功运行)
defaultConfig { applicationId = "com.example.myapplication" minSdk = 26 targetSdk = 35 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" }
运行程序后出现以下的错误提示
2 files found with path 'META-INF/DEPENDENCIES' from inputs:
- org.apache.httpcomponents.core5:httpcore5-h2:5.0.4/httpcore5-h2-5.0.4.jar
- org.apache.httpcomponents.core5:httpcore5:5.0.4/httpcore5-5.0.4.jar
Adding a packaging block may help, please refer to
https://developer.android.com/reference/tools/gradle-api/com/android/build/api/dsl/Packaging
for more information
对build.gradle.kts文件中代码进行添加exclude进行依赖排除
defaultConfig { applicationId = "com.example.myapplication" minSdk = 26 targetSdk = 35 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } packaging { resources { excludes +="META-INF/DEPENDENCIES" } }
最终程序运行成功