Android | ArcGIS入门
一、概述
ArcGIS是由Esri开发的地理信息系统(GIS)软件。它用于制图、空间分析和数据可视化。ArcGIS允许用户以各种格式创建、管理、分析和共享地理信息。它通常用于城市规划、环境管理和应急响应等领域。该软件包括一系列工具,用于创建地图、进行空间分析以及生成报告和可视化。ArcGIS提供了丰富的功能和功能,使用户能够更好地理解和利用地理空间数据。
二、案例
注:本案例工具使用Android Studio Hedgehog | 2023.1.1 Patch 2 版本,ArcGIS采用arcgis-android:100.13.0版本
1、配置文件
(1)settings.gradle文件
添加如下代码:
maven {url = uri("https://maven.aliyun.com/repository/google")url = uri("https://maven.aliyun.com/repository/jcenter")url = uri("https://maven.aliyun.com/repository/mavenCentral")url = uri("https://maven.aliyun.com/repository/gradle-plugin")url = uri("https://maven.aliyun.com/nexus/content/repositories/releases/")url = uri("https://jitpack.io")url = uri("https://esri.jfrog.io/artifactory/arcgis")}

(2)build.gradle文件
在android块中添加如下代码:
// 设置与Java 8语言特性的兼容性compileOptions {sourceCompatibility = JavaVersion.VERSION_1_8targetCompatibility = JavaVersion.VERSION_1_8}// 启用视图绑定(view binding)功能buildFeatures {viewBinding = true}// 排除META-INF\DEPENDENCIES文件的重复项,防止在输出中多次包含相同的文件而导致编译错误packaging{exclude("META-INF/DEPENDENCIES")exclude("META-INF/LGPL2.1")exclude("META-INF/LICENSE")exclude("META-INF/NOTICE")}

在dependencies块中引入arcgis-android:100.13.0:
implementation("com.esri.arcgisruntime:arcgis-android:100.13.0")

(3)AndroidManifest.xml文件
在文件中添加如下权限:
<!-- 访问网络权限 --><uses-permission android:name="android.permission.INTERNET" /><!-- 访问网络状态权限 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- 添加粗略定位权限 --><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!-- 添加精确定位权限 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><!-- 读写外部存储权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!-- 允许程序在手机屏幕关闭后后台进程仍然运行 --><uses-permission android:name="android.permission.WAKE_LOCK" /><!-- 添加OpenGL2.0支持 --><uses-feature android:glEsVersion="0x00020000" android:required="true" tools:ignore="WrongManifestParent" /><!-- 用户支持 --><supports-screensandroid:smallScreens="true"android:normalScreens="true"android:largeScreens="true"android:xlargeScreens="true"android:anyDensity="true" />

2、布局文件
在activity_main.xml添加ArcGIS组件,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><com.esri.arcgisruntime.mapping.view.MapViewandroid:id="@+id/mapView"android:layout_width="match_parent"android:layout_height="match_parent" /></androidx.constraintlayout.widget.ConstraintLayout>
3、Java代码
在MainActivity.java文件中编写代码:
(1)添加组件
private MapView mMapView;

(2)注册组件
mMapView = findViewById(R.id.mapView);ArcGISMap map = new ArcGISMap(Basemap.Type.TOPOGRAPHIC, 34.056295, -117.195800, 16);mMapView.setMap(map);

(3)生命周期控制
@Overrideprotected void onPause(){mMapView.pause();super.onPause();}@Overrideprotected void onResume(){super.onResume();mMapView.resume();}@Overrideprotected void onDestroy() {super.onDestroy();mMapView.dispose();}

Java代码总览如下:
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.Basemap;
import com.esri.arcgisruntime.mapping.view.MapView;public class MainActivity extends AppCompatActivity {private MapView mMapView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mMapView = findViewById(R.id.mapView);ArcGISMap map = new ArcGISMap(Basemap.Type.TOPOGRAPHIC, 34.056295, -117.195800, 16);mMapView.setMap(map);}@Overrideprotected void onPause(){mMapView.pause();super.onPause();}@Overrideprotected void onResume(){super.onResume();mMapView.resume();}@Overrideprotected void onDestroy() {super.onDestroy();mMapView.dispose();}
}
4、运行结果
此时若没有报错,运行程序,已经可以展示地图。效果如下:
(按住鼠标左键可以拖动地图,同时按住Ctrl键和鼠标左键可以缩放地图)

相关文章:
Android | ArcGIS入门
一、概述 ArcGIS是由Esri开发的地理信息系统(GIS)软件。它用于制图、空间分析和数据可视化。ArcGIS允许用户以各种格式创建、管理、分析和共享地理信息。它通常用于城市规划、环境管理和应急响应等领域。该软件包括一系列工具,用于创建地图、…...
dockerfile文件书写
1.dockerfile构建nginx镜像 1.1书写dockerfile文件 mkdir nginx #创建nginx目录 cd nginx vim dockerfile # 修改文件FROM centos # 基础镜像,默认最新的centos8操作系统 MAINTAINER xianchao # 指定镜像的作者信息 RUN rm -rf /etc/yum.repos.d/* # centos8默认…...
蓝桥杯-整数删除
给定一个长度为 N 的整数数列:A1, A2, ... , AN。你要重复以下操作 K 次: 每次选择数列中最小的整数(如果最小值不止一个,选择最靠前的),将其删除。 并把与它相邻的整数加上被删除的数值。 输出 K 次操作后…...
以程序员的视角,看前后端分离的是否必要?
Hello,我是贝格前端工场,本篇分享一个老生常谈的话题,前后端分离是必然趋势,但也是要区分具体的场景,欢迎探讨,关注,有前端开发需求可以私信我,上车了。 一、什么是前后端分离和不分…...
Linux:sed进阶(12)
Linux:shell脚本:基础使用(5)《正则表达式-sed工具》_linux脚本表达式s-CSDN博客https://blog.csdn.net/w14768855/article/details/132347574?ops_request_misc%257B%2522request%255Fid%2522%253A%252217084222871680019707523…...
Linux命令-builtin命令(执行bash内建命令)
说明 用于执行指定的bash内建命令。builtin 命令调用的bash内建命令优先于同名的外部命令及同名的shell函数。 语法 builtin [shell-builtin [arg ...]]参数 shell-builtin(可选):要调用的bash内建命令。 arg(可选)…...
HTML的特殊字符
HTML的特殊字符 有些特殊的字符在 html 文件中是不能直接表示的,例如: 空格,小于号(<),大于号(>),按位与(&)。 空格 示例代码: 运行结果: 由于html 标签就是用 < > 表示的࿰…...
内核移植学习
内核移植 内核移植就是指将RT-Thread内核在不同的芯片架构、不同的板卡上运行起来。 移植可分为CPU架构移植和BSP板级支持包移植两部分。 CPU架构移植 在嵌入式领域有多种不同CPU架构,例如Cortex-M、ARM920T、MIPS32、RISC-V等等。 为了使RT-Thread能够在不同C…...
Mysql 两个日期相减得到指定的格式数据
首先避坑: Mysql 中两个日期直接相减,若在同一天则得到的是秒,否则相减得到的并不是秒,一定要注意。 函数 TIMESTAMPDIFF(unit,begin,end); 函数返回 begin - end 的结果。 其中 begin 和 end 是 DATE 或 DATETIME 表达式。 …...
第六十四天 服务攻防-框架安全CVE复现Apache shiroApache Solr
第六十四天 服务攻防-框架安全&CVE复现Apache shiro&Apache Solr 知识点: 中间件及框架列表: IIS,Apache,Nginx,Tomcat,Docker,K8s,Weblogic.JBoos,WebSphere, Jenkins,GlassFish,Jetty,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring, Flask,jQuery等 1、开发框…...
JavaScript 设计模式之享元模式
享元 将一部分共用的方法提取出来作为公用的模块 const Car {getName: function () {return this.name},getPrice: function (price) {return price * 30} }const BMW function (name, price) {this.name namethis.price price } BMW.prototype Car const bmw new BMW(…...
利用故事推动企业变革:如何提升数据分析技能
单一的数据和表格尽管有算法的支撑,但在其表达方式上总会让人感到头疼。当我们需要深入了解企业的盈利能力,或是尝试评估业务的增长机会时,以往都会将精力全部放在分析数字、阅读信息、回顾历史和沟通交流之上,却忽略随之而生成的…...
Python内置函数04——enumerate
文章目录 概述语法实例展示 概述 在Python中,enumerate()是一个很常用的内置函数。它的作用是将一个可迭代对象(如列表、元组、字符串等)组合为一个索引序列和元素序列的枚举对象。 语法 enumerate(iterable, start0) 其中,ite…...
unity学习(28)——登录功能
有之前注册的知识,登录就很容易处理了。 登陆成功返回id: 登录失败返回null: 测试同一账号不能重复登陆!登录成功后最好可以跳到新的场景中 结果是好的,去服务器看一下对应部分的代码,可见,登…...
Mac公证脚本-Web公证方式
公证方式 Mac 公证方式有三种 公证方法 优点 缺点 阐述 Xcode Xcode携带的图形界面,使用方便 无法进行自动化公证 单个App应用上架使用较多 altool(旧版) 支持pkg,dmg,脚本自动化 2023/11/01 将会过期 已经…...
让你专注工作的思维模板,进入每天的专注生活
开启专注生活,打造高效氛围,踏上传奇之路。 如何专注工作? 阻止内部干扰阻止外部干扰结论 专注象限图如下:(幸福是一种不断增加难度的活动) A1是你开始做某事的时候。 A2是当任务变得过于简单的时候。 A3是…...
Java之获取Nginx代理之后的客户端IP
Java之获取Nginx代理之后的客户端IP Nginx代理接口之后,后台获取的IP地址都是127.0.0.1,解决办法是需要配置Nginx搭配后台获取的方法,获得设备的真实地址。我们想要获取的就是nginx代理日志中的这个IP nginx配置 首先在nginx代理的对应lo…...
【springboot+vue项目(十五)】基于Oauth2的SSO单点登录(二)vue-element-admin框架改造整合Oauth2.0
Vue-element-admin 是一个基于 Vue.js 和 Element UI 的后台管理系统框架,提供了丰富的组件和功能,可以帮助开发者快速搭建现代化的后台管理系统。 一、基本知识 (一)Vue-element-admin 的主要文件和目录 vue-element-admin/ |…...
音频的传输链路与延迟优化点
麦克风->系统采集模块->APP采集模块->3A、混响等音效->混音->音频编码->RTC网络发送-> MediaServer->RTC网络接收->音频jitter buffer->音频解码->音频的后处理(均衡)->APP播放模块->x系统播放模块->扬声器/耳机。 整个链路如上&a…...
【51单片机】直流电机驱动(PWM)(江科大)
1.直流电机介绍 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转 直流电机主要由永磁体(定子)、线圈(转子)和换向器组成 除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等 2.电机驱动…...
Firmwork-Common:嵌入式跨平台基础库设计与实践
1. 项目概述Firmwork-Common 是 Firmwork 嵌入式固件生态体系中的全局基础库(Global Common Library),其核心定位并非提供特定外设驱动或协议栈,而是为整个 Firmwork 生态下的所有模块、中间件及应用层代码提供统一、稳定、可移植…...
从零到一:在Windows 11 WSL2上本地跑通Dify AI工作流(含GPU加速配置)
从零到一:在Windows 11 WSL2上本地跑通Dify AI工作流(含GPU加速配置) 对于习惯Windows环境的开发者来说,直接在本地搭建AI开发环境往往面临两难选择:要么忍受虚拟机沉重的资源开销,要么被迫切换到Linux系统…...
从零到精通:Logisim-evolution数字电路设计完全指南
从零到精通:Logisim-evolution数字电路设计完全指南 【免费下载链接】logisim-evolution Digital logic design tool and simulator 项目地址: https://gitcode.com/gh_mirrors/lo/logisim-evolution 想要掌握数字电路设计的精髓,却苦于找不到合适…...
Qwen2.5-VL视觉定位效果展示:Ollama输出坐标+置信度+层级关系JSON
Qwen2.5-VL视觉定位效果展示:Ollama输出坐标置信度层级关系JSON 最近在玩一个挺有意思的AI模型——Qwen2.5-VL-7B-Instruct。这可不是普通的聊天机器人,它是一个能“看懂”图片,还能把看到的东西用结构化数据告诉你的视觉多模态模型。 简单…...
Open-AutoGLM场景实战:电商购物、出行旅游、内容浏览一键完成
Open-AutoGLM场景实战:电商购物、出行旅游、内容浏览一键完成 1. 引言:手机AI助手的革命性突破 想象一下这样的场景:早上醒来,你对手机说"帮我订一杯星巴克拿铁和一份三明治",手机自动完成打开外卖应用、选…...
模电设计实践之“音频功率放大器的设计” - 包含OCL主放大器设计、总电路图与框架详解、设计方...
模电设计实践之音频功率放大器的设计(word文档)文档有详细的参数计算过程 其主要内容是: 1、OCL主放大器的设计 2、总电路图、框架图以及单元电路介绍 3、设计方案论证 4、设计及电路参数计算,元器件选择 5、技术指标校验拆开音响…...
深入解析Supabase与Flutter的用户认证问题
深入解析Supabase与Flutter的用户认证问题 当我们使用Flutter开发移动应用时,用户认证是一个不可或缺的部分。而Supabase作为一个开源的数据库和后端服务,提供了强大的功能来帮助我们实现这个需求。然而,在集成过程中,我们可能会遇到一些问题。本文将详细探讨如何解决在Su…...
TI SAR ADC模型(Matlab) 包含各类非理想因素,时钟偏差,增益偏差
TI SAR ADC模型(Matlab) 包含各类非理想因素,时钟偏差,增益偏差,失调偏差 模型参数均可自由设置直接上干货吧,今天聊聊怎么用Matlab折腾带非理想特性的SAR ADC模型。玩过ADC的都知道,现实中的转…...
Transformer 原理与实现(二):从代码看透 Transformer
在上一篇文章 [Transformer 原理与实现(一):从 Attention 到编码解码机制](https://blog.csdn.net/Cha0DD/article/details/159753362) 中,我们从概念层面深入理解了 Transformer 的核心机制。 今天,我们将通过实际的…...
零基础封神!10行代码写渗透专用爬虫,一键扫遍靶场敏感资产
零基础封神!10行代码写渗透专用爬虫,一键扫遍靶场敏感资产 上一篇我们一起打破了认知壁垒,焊死了合规红线,用3行代码跑通了第一个渗透型爬虫。 很多粉丝后台私信我说,第一次跑通代码,看到命令行里打印出靶场…...

