高德sdk5.0之后的地图实践接入(一)

这里是高德的官方开发文档

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

在里面输入如下

最终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。
    }
发布了16 篇原创文章 · 获赞 1 · 访问量 710

猜你喜欢

转载自blog.csdn.net/u010632547/article/details/104926926