Android引用SDK包实现高德地图展示

一、准备工作

  • 注册高德地图开放平台


            注册过程我就不多说了,挺简单的,需要登录,然后注册成为开发者,还需要支付宝认证、手机号码验证、邮箱验证挺多的,但是速度很快。基本上随时验证随时注册成功。

  • 新建应用


  • 新建Android项目


    项目建好了我们现在来继续完成搞得地图中的配置。
  • 应用配置


    安全码就是一个签名,我们能够在系统目录-->用户目录-->.android-->debug.keystore

    找到这个以后,我们Win+R打开运行,输入cmd打开终端窗口:

    在终端中输入命令where keytool,查看一下自己的keytool有没有在环境变量中配置好,没有配置的话,先去环境变量中将keytool配置好,这里如何配置我就不讲了,可以自行搜索:

    我们进入到存放debug.krystore的文件夹目录下:

    在命令行中输入keytool -list -v -keystore debug.keystore:

    输入:android,一定要是小写的

    复制SHA1后面的指纹,粘贴到高德控制台

    还剩下PackageName:




    ok,目前我们关于高德这边的已经配置好了,接下来我们去下载SDK包
  • 下载SDK包

      

        下载完成后将其解压,分别复制:


到这儿,我们的准备工作已经全部完成了。


二、配置gradle.build

打开libs文件夹选中jar包---->右键---->Add as Library...

 等待gradle依赖库更新如出现下图表明已经构建成功:


三、编写地图布局

1.编写地图布局


 

<com.amap.api.maps.MapViewandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent">
</com.amap.api.maps.MapView><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="进入地图"android:onClick="GotoMap"tools:ignore="MissingConstraints" />

2.声明权限

<!--允许程序打开网络套接字--><uses-permission android:name="android.permission.INTERNET" /><!--允许程序设置内置sd卡的写权限--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!--允许程序获取网络状态--><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!--允许程序访问WiFi网络信息--><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!--允许程序读写手机状态和身份--><uses-permission android:name="android.permission.READ_PHONE_STATE" /><!--用于进行网络定位--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission><!--用于访问GPS定位--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission><!--用于获取wifi的获取权限,wifi信息会用来进行网络定位--><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission><!--用于读取手机当前的状态--><uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission><!--用于申请调用A-GPS模块--><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>

3.设置高德key


4.设置高德地图SDK隐私合规

注意:这里非常重要,我在这里踩过大坑,按照以往经验是不需要设置这些的,甚至整个开发步骤也并非如此,现在的开发步骤是最新的高德地图官方指导,步骤简化了,但是开发过程涉及用户隐私部分的控制被强调了,因此如果步写这两段代码,在整个项目开发完成以后展现出来的可能是白屏,地图无法显示出来哦  o(O_O)o······

//设置高德地图SDK隐私合规
MapsInitializer.updatePrivacyAgree(this,true);
MapsInitializer.updatePrivacyShow(this,true,true);

5.获取地图控件

private MapView mapView;
private AMap aMap;

//获取地图控件引用
mapView = (MapView) findViewById(R.id.map);
//在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
mapView.onCreate(savedInstanceState);

 6.初始化地图控制器

//初始化地图控制器对象
if (aMap == null) {aMap = mapView.getMap();
}

@Override
protected void onDestroy() {super.onDestroy();//在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图mapView.onDestroy();
}
@Override
protected void onResume() {super.onResume();//在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图mapView.onResume();
}
@Overrideprotected void onPause() {super.onPause();//在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制mapView.onPause();
}
@Override
protected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);//在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态mapView.onSaveInstanceState(outState);
}

7.显示定位蓝点

MyLocationStyle myLocationStyle;
myLocationStyle = new MyLocationStyle();//初始化定位蓝点样式类myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);//连续定位、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。(1秒1次定位)如果不设置myLocationType,默认也会执行此种模式。
myLocationStyle.interval(2000); //设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒。
myLocationStyle.showMyLocation(true);//设置是否显示定位小蓝点,用于满足只想使用定位,不想使用定位小蓝点的场景,设置false以后图面上不再有定位蓝点的概念,但是会持续回调位置信息。
aMap.setMyLocationStyle(myLocationStyle);//设置定位蓝点的Style
aMap.getUiSettings().setMyLocationButtonEnabled(true);//设置默认定位按钮是否显示,非必需设置
myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_MAP_ROTATE);//连续定位、且将视角移动到地图中心点,地图依照设备方向旋转,定位点会跟随设备移动。(1秒1次定位)
aMap.setMyLocationEnabled(true);// 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。

        至此,功成!!!!! 

四、成果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/211615.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在C语言中,%d,%c,%f都是什么意思

printf函数调用的一般形式 printf函数是一个标准库函数&#xff0c;它的函数原型在头文件“stdio.h”中。但作为一个特例&#xff0c;不要求在使用 printf 函数之前必须包含stdio.h文件。printf函数调用的一般形式为&#xff1a; printf(“格式控制字符串”&#xff0c;输出表列…

重点车辆安全监测预警技术方案

目录 1.系统架构 2.详细设计 2.1驾驶员信息监控 2.1.1驾驶员基本信息管理 2.1.2人车匹配信息 2.1.3驾驶员在线状态管理 2.2车辆状态信息管理 2.2.1车辆信息管理 2.1.2车辆在路状态管理 2.3重点车辆安全监测预警系统云平台 2.3.1云平台需求分析 2.3.2 设计思想 2.4.…

urllib 异常、cookie、handler及代理(四)

目录 一、urllib异常 二、urllib cookie登录 三、urllib handler 处理器的基本使用 四、urllib 代理和代理池 参考 一、urllib异常 URLError/HTTPError 简介&#xff1a; 1.HTTPError类是URLError类的子类 2.导入的包urllib.error.HTTPError urllib.error.URLError 3.h…

18 Java与redis集群的通信

1、引入依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.6.3</version></dependency>2、配置 # Redis集群服务器地址 redis.nodesaliyun:6900,aliyun:6901,aliyun:6902,aliyun…

20道计算机网络面试题

网络分层 1、说说OSI 七层、TCP/IP 四层的关系和区别&#xff1f; OSI 七层从下往上依次是&#xff1a;物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。一张图给你整明白&#xff1a; TCP/IP 四层从下往上依次是&#xff1a;网络接口层、网络层、传输层、应用…

MATLAB - 评估拟合优度、评价拟合效果

系列文章目录 文章目录 系列文章目录前言一、如何评估拟合优度二、拟合优度统计2.1 SSE - 误差引起的平方和2.2 R 平方2.3 自由度调整 R 平方2.4 均方根误差 三、MATLAB - 评估曲线拟合度3.1 加载数据并拟合多项式曲线3.2 绘制拟合方程、数据、残差和预测范围图3.3 评估指定点3…

java--Object

1.Object类的作用 Object类是java中所有类的祖宗类&#xff0c;因此&#xff0c;java中所有类的对象都可以直接使用Object类中提供一些方法 2.Object类的常见方法 ①toString存在的意义&#xff1a;toString()方法存在的意义就是为了被子类重写&#xff0c;以便返回对象具体的…

【Python实战系列】一文彻底搞懂异常捕获及处理(理论+源码)

一、问题 异常处理是Python中一种用于处理程序运行时错误的机制。在编写代码时&#xff0c;可能会出现各种不可预测的情况&#xff0c;例如除零错误、文件不存在、网络连接问题等等。为了确保程序能够在出现错误时正常运行&#xff0c;您可以使用异常处理机制来捕获和处理这些异…

K8S学习指南(5)-k8s核心对象namespace

文章目录 前言什么是Namespace&#xff1f;Namespace的类型创建Namespace使用kubectl创建Namespace示例 切换Namespace查看Namespace在Namespace中部署应用程序使用Namespace进行资源隔离Namespace的权限控制删除Namespace总结 前言 Kubernetes&#xff08;简称K8s&#xff09…

前端知识(十六)——js获取时间戳方法

1、获取当前时间 let date new Date() 2、将字符串或者对象直接转化成时间戳 方法&#xff1a;Date.parse() 注意&#xff1a;不推荐这种方法&#xff0c;毫秒级别的数值被转化为000 3、通过valueOf()函数返回指定的原始值获得精准的时间戳值 方法&#xff1a;valueOf()…

git自动更新功能

确认权限 因为一般Linux系统网页用的www 或 www-data用户和用户组,所以要实现自动来去,首先要在www用户权限下生成ssh密钥,不然没有权限,其次就是,要把用root用户拉去的代码,批量改成www用户 1. 给www权限 vi /etc/sudoers www ALL=(ALL) NOPASSWD:/bin/chow…

memset的用法

语法 1.引用所需头文件 #include<string.h> 2.声明 void * memset ( void * ptr, int value, size_t num ); ptr 表示要设置的数据的起始地址。如果是要设置整个数组的数据&#xff0c;那ptr就是数组名&#xff08;数组首元素的地址&#xff09; value 表示要设置的值…

【学习笔记】lyndon分解

摘抄自quack的ppt。 这部分和 s a sa sa的关联比较大&#xff0c;可以加深对 s a sa sa的理解。 Part 1 如果字符串 s s s的字典序在 s s s以及 s s s的所有后缀中是最小的&#xff0c;则称 s s s是一个 lyndon \text{lyndon} lyndon串。 lyndon \text{lyndon} lyndon分解&a…

c++ 类和对象-封装意义一

属性和行为作为整体 示例一&#xff1a;设计一个圆类&#xff0c;求圆的周长 #include<iostream> using namespace std; //圆周率 const double PI 3.14; //设计一个圆类&#xff0c;求圆的周长 //圆求周长的公式&#xff1a;2*PI*半径 //class代表设计一个类&#xf…

熔池处理Tecplot 360 和CFD-Post做出一样的效果

熔池处理Tecplot 360 和CFD-Post做出一样的效果 效果展示详细讲述Tecplot 360实现过程分析实现过程第一步实现过程第二步界面美化注意点效果展示 详细讲述Tecplot 360实现过程 分析 这里主要是将体积分数大于0.5的区域抽取出来,然后显示温度场,所以这里主要考虑下面连个思考…

PCL 三维点云中求解圆的三维方程

一、概述 在给出的三维点云中求解拟合圆的三维方程 二、代码示例 #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/sample_consensus/ransac.h> #include <pcl/sample_consensus/sac_model_circle3D.h> // 拟

【贪心算法】 Opponents

这道题写伪代码就好了&#xff01; Description Arya has n opponents in the school. Each day he will fight with all opponents who are present this day. His opponents have some fighting plan that guarantees they will win, but implementing this plan requires pr…

【开源】基于Vue+SpringBoot的固始鹅块销售系统

项目编号&#xff1a; S 060 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S060&#xff0c;文末获取源码。} 项目编号&#xff1a;S060&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 鹅块类型模块2.3 固…

Mybatis-plus中wrapper的区别

在MyBatis-Plus框架中,LambdaQueryWrapper 和 QueryWrapper 是用于构建查询条件的两个主要类。它们都是查询条件构造器,用于在查询中生成 WHERE 子句的条件。 QueryWrapper QueryWrapper 是 MyBatis-Plus 3.x 中引入的条件构造器。它的主要特点是使用字符串作为字段名,并支…

python 数字保留小数位数 结果是字符串

precision 2 f{px :.{precision}f} # 自定义动态 f{x:.2f} 数字 转 字符串 保留dot后面的位数 结果 字符串