一、准备工作
- 注册高德地图开放平台
注册过程我就不多说了,挺简单的,需要登录,然后注册成为开发者,还需要支付宝认证、手机号码验证、邮箱验证挺多的,但是速度很快。基本上随时验证随时注册成功。 - 新建应用
- 新建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.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.amap.api.maps.MapView>
<Button
android: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();
}
@Override
protected 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。
至此,功成!!!!!