这里是高德的官方开发文档
https://lbs.amap.com/api/android-sdk/guide/create-map/mylocation
这里是SDK中具体的API介绍
http://a.amap.com/lbs/static/unzip/Android_Map_Doc/index.html
下面开始接入的准备工作
先在高德的控制台创建应用,并为你的应用配置如下
现在对上面的几个参数依次讲解
key名称:随便起个名称就是 了
服务平台:选择android
发布版安全码的获取
打开AndroidStudio的Terminal
在里面输入如下:keytool -v -list -keystore c:/project/xxx.jks
最终sha1值如下,将此值填上即可
调试版的安全码:
为了开发方便,尽量把调试版的安全码写成发布码的安全码,当写调试版写上发布版的安全码后,要在app.build 中做如下配置
signingConfigs {
debug {
storeFile file('C:\\project\\xxxx.jks')
storePassword 'xxx'
keyAlias = 'key0'
keyPassword 'xxx'
}
}
这样做,就相当于是你调试用的签名和发布用的签名完全一样了。
以上步骤做完了之后,在app.build中,添加你要使用的高德sdk,比如我需要3d地图,定位,搜索功能,那么就添加如下,下面的这种添加方式,是依赖高德最新的sdk
//3D地图so及jar
implementation 'com.amap.api:3dmap:latest.integration'
//定位功能
implementation 'com.amap.api:location:latest.integration'
//搜索功能
implementation 'com.amap.api:search:latest.integration'
接着在AndroidManifest.xml中添加一个key,如下
该key可以在控制的这个位置进行复制,如下
到此位置,总算将这些信息配置完毕了,下面就开始具体写代码了。
先来一个小功能,就是打开地图后,就直接显示当前位置,效果如下
添加如下代码即可实现上述效果
RunTimePermissionUtil permissionUtil;
private void showLocation() {
if(permissionUtil == null){
permissionUtil = new RunTimePermissionUtil();
}
String[] permission = new String[]{Manifest.permission.ACCESS_COARSE_LOCATION};
permissionUtil.requestRuntimePermissions(SelectAreaFromMap.this,permission,new RunTimePermissionUtil.PermissionListener(){
@Override
public void denied(String denied) {
if(denied.equals(Manifest.permission.ACCESS_COARSE_LOCATION)){
ToastUtils.show("请在设置中添加本应用的定位权限");
}
}
@Override
public void allGranted() {
processMap();
}
});
setPermissionUtil(permissionUtil);
}
private void processMap() {
MyLocationStyle myLocationStyle;
myLocationStyle = new MyLocationStyle();//初始化定位蓝点样式类myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);//连续定位、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。(1秒1次定位)如果不设置myLocationType,默认也会执行此种模式。
myLocationStyle.interval(3000); //设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒。
AMap aMap = this.mMapView.getMap();
// aMap.setLocationSource(this);
aMap.setMyLocationStyle(myLocationStyle);//设置定位蓝点的Style
aMap.getUiSettings().setMyLocationButtonEnabled(true);//设置默认定位按钮是否显示,非必需设置。
aMap.setMyLocationEnabled(true);// 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。
}