ArcGiS for Android 10.6创建Hello Word
你好! 我最近在做一个基于ArcGIS for Android展示地层信息的本科毕业设计,将其SDK中的一些基本功能在这里笔记一下,便于后面使用,同时希望其他人少走弯路。全部都是从网上学习或者自己摸索的一些东西,如果有错误希望评论出来,我们一起交流学习。
几个我认为有用的网站:ArcGIS官网、Android开发指南
创建一个Hello Word
下面的内容摘抄自ArcGIS官方入门文档
- 运行Android Studio并创建一个新的Android Studio项目。将应用程序名称设置为Starter Project。
- 运行Android Studio并创建一个新的Android Studio项目。将应用程序名称设置为Starter Project。在项目视图中的Gradle脚本> build.gradle(Project:…)下,将项目Gradle存储库更新为Esri的Bintray Maven存储库URL。
allprojects {
...
repositories {
...
// *** ADD ***
maven {
url 'https://esri.bintray.com/arcgis'
}
- 在“ 项目”视图中的Gradle脚本> build.gradle(模块:app)下更新应用程序模块 Gradle依赖项,以包括适用于Android的ArcGIS Runtime SDK依赖项。
dependencies {
...
// *** ADD ***
implementation 'com.esri.arcgisruntime:arcgis-android:100.7.0'
在该android块中添加Java 8编译选项:
android {
...
// *** ADD ***
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
- 更新Gradle脚本后,将要求您同步更改。单击立即同步提示,或单击工具栏中的刷新图标(将项目与Gradle文件同步)。
- 更新android清单文件以允许网络访问,并指示该应用程序使用OpenGL 2.0或更高版本。Android清单文件位于项目层次结构中的app> manifests> AndroidManifest.xml下。确保将这些新元素插入到元素中。
<uses-permission android:name="android.permission.INTERNET" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
- 将地图控件添加到您的应用
打开文件app> res> layout> activity_main.xml,然后将整个TextView元素替换为一个MapView元
素。 如果未出现XML代码,请选择“ 文本”选项卡以退出设计模式,以在编辑器中显示XML代码。
<com.esri.arcgisruntime.mapping.view.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</com.esri.arcgisruntime.mapping.view.MapView>
打开文件应用> Java> {your.package.name}> MainActivity.java并创建一个MapView私有成员变量。
public class MainActivity extends AppCompatActivity {
// *** ADD ***
private MapView mMapView;
AndroidStudio将以红色突出显示MapView该类,该类必须导入到该类中。将指针放在以红色突出显示的文本上,然后在Windows上按Alt +Enter(在Mac上为Option + Enter)以解析该符号。
setupMap在MainActivity类定义中添加一个新方法。在Windows上使用Alt + Enter(在Mac 上是Option+ Enter)可解决缺少的符号Basemap和ArcGISMap。
private void setupMap() {
if (mMapView != null) {
Basemap.Type basemapType = Basemap.Type.STREETS_VECTOR;
double latitude = 34.0270;
double longitude = -118.8050;
int levelOfDetail = 13;
ArcGISMap map = new ArcGISMap(basemapType, latitude, longitude, levelOfDetail);
mMapView.setMap(map);
}
}
onCreate在调用之后,将以下代码添加到现有方法中setContentView。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// *** ADD ***
mMapView = findViewById(R.id.mapView);
setupMap();
覆盖onPause,onResume以及onDestroy该方法的MainActivity类:
@Override
protected void onPause() {
if (mMapView != null) {
mMapView.pause();
}
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
if (mMapView != null) {
mMapView.resume();
}
}
@Override
protected void onDestroy() {
if (mMapView != null) {
mMapView.dispose();
}
super.onDestroy();
}
运行您的应用并在Android模拟器中测试代码以查看地图。
关于添加SDK
- 可以按照上面的第二、三步通过url添加,但是ArcGIS可能会有网络的问题
- 还可以在ArcGIS的开发者网站上下载SDK,将包复制到lib目录下,后在“ 项目”视图中的Gradle脚本> build.gradle(模块:app)下更新应用程序模块 Gradle依赖项。
dependencies {
...
// *** ADD ***
implementation fileTree(dir: 'libs/aar', include: ['*.aar']) //注意dir参数为aar包的位置
如果复制了文件并添加了上面的代码还是爆红,多半是路径填错了。