ArcGIS Runtime for Android 5 加载地图

Posted 我也是个傻瓜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArcGIS Runtime for Android 5 加载地图相关的知识,希望对你有一定的参考价值。

经过前期的Android Studio软件部署、Gradle构建配置、项目认识、模拟调试等,本文才正式使用ArcGIS Runtime for Android的SDK,我们可以参考官网教程。

1、申请Key

注册一个ESRI账号,并申请一个开发者API Key(很长的字符串)。

Dashboard | ArcGIS Developers

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_
        android:layout_
        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+鼠标滑轮对视图进行放大或缩小。

以上是关于ArcGIS Runtime for Android 5 加载地图的主要内容,如果未能解决你的问题,请参考以下文章

Arcgis Runtime for andriod 100 加载geodatabase

Arcgis Runtime for andriod 100 加载TPK

Arcgis Runtime for andriod 100 Simple marker symbol

ArcGIS Runtime for Android 5 加载地图

用ArcGIS Runtime for Android建立简单App,展示地图

ArcGIS Runtime for Android 1 开发环境部署