ArcGIS Runtime for Android 5 加载地图
经过前期的Android Studio软件部署、Gradle构建配置、项目认识、模拟调试等,本文才正式使用ArcGIS Runtime for Android的SDK,我们可以参考官网教程。
1、申请Key
注册一个ESRI账号,并申请一个开发者API Key(很长的字符串)。
2、新建项目
新建一个空的安卓项目。
设置好项目位置,语言选择Kotlin(推荐),SDK版本选择API 23。
我们将逐个修改和编辑下面的这些文件。
3、配置Gradle
配置和同步Gradle比较关键的步骤。
在模块级build.gradle增加视图绑定viewBinding、排除重复项exclude设置(现在不理解也没关系,照做就行,后面慢慢就懂了)
//启用视图绑定 buildFeatures { viewBinding true } //排除文件重复项 packagingOptions { exclude 'META-INF/DEPENDENCIES' } …… // 地图arcgis runtime implementation 'com.esri.arcgisruntime:arcgis-android:100.15.1'
在 settings.gradle 文件中,添加Esri 的 Maven 远程仓库的 URL。
// 远程仓库 maven { url 'https://esri.jfrog.io/artifactory/arcgis' }
当gradle修改后,会自动弹出同步的消息,也可以点击工具的"Sync Project with Gradle Files".
在线同步完成后,就可以写界面和后台代码了。
4、编写代码
代码包括配置设置、前台代码、后台代码三部分。
(1)联网权限配置设置。在AndroidManifest.xml中增加联网的权限(因为要访问在线的地图)。
<!--申请的用户权限--> <uses-permission android:name="android.permission.INTERNET" /> <!--依赖的外部硬件--> <uses-feature android:glEsVersion="0x00020000" android:required="true" />
(2)前面界面。在activity_main.xml中添加ArcGIS Runtime的MapView组件。
<com.esri.arcgisruntime.mapping.view.MapView android:id="@+id/mapView" android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" />
(3)后台功能。在MainActivity实现地图加载功能。
package com.gis.displaymap import android.os.Bundle import androidx.appcompat.app.AppCompatActivity // 导入命名空间 import com.esri.arcgisruntime.ArcGISRuntimeEnvironment import com.esri.arcgisruntime.layers.ArcGISTiledLayer import com.esri.arcgisruntime.mapping.ArcGISMap import com.esri.arcgisruntime.mapping.Basemap import com.esri.arcgisruntime.mapping.Viewpoint import com.esri.arcgisruntime.mapping.view.MapView import com.gis.displaymap.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(activityMainBinding.root) setApp() setupMap() } private val activityMainBinding by lazy { ActivityMainBinding.inflate(layoutInflater) } private val mapView: MapView by lazy { activityMainBinding.mapView } override fun onPause() { mapView.pause() super.onPause() } override fun onResume() { super.onResume() mapView.resume() } override fun onDestroy() { mapView.dispose() super.onDestroy() } private fun setApp(){ //设置Key ArcGISRuntimeEnvironment.setApiKey("AAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") } private fun setupMap() { // 创建地图 val url= "http://map.geoq.cn/arcgis/rest/services/ChinaOnlineCommunity/MapServer" val arcGISTiledLayer = ArcGISTiledLayer(url) val map = ArcGISMap(Basemap(arcGISTiledLayer)) // 设置MapView的地图 mapView.map = map // 设置初始位置 mapView.setViewpoint(Viewpoint(30.67, 104.06, 720000.0)) } }
5、调试运行
启动程序即可。
如果是在模拟器运行浏览地图,按住Ctrl+鼠标滑轮对视图进行放大或缩小。
作者:我也是个傻瓜
出处:http://www.cnblogs.com/liweis/
签名:成熟是一种明亮而不刺眼的光辉。