Android简单集成高德地图API

发布时间 2023-03-26 18:39:01作者: -她的梦-

首先进入高德官网  高德开放平台 | 高德地图API (amap.com)

 

 注册登录完成之后创建新应用

 

 点击之后呈现如下页面:

 

 Key的名称随便起,主要是提交后会有一个key码,在下面告诉大家。这里需要SHA1码,踩过坑之后大家可以使用如下的方法:

首先win + R 输入cmd进入DOS命令窗口

然后输入 cd.android,进入下一级目录

 

 这里的密钥库口令就是android  注意:输入的时候不会呈现明文和密文,输入完毕之后回车即可。

 

 这里会有我们的SHA1码,两个都填这个就可以。

最后的package_name是我们的app项目的包名,这里以我的作为示范:

在build.gradle文件里面

 

提交完毕之后会有一个key码,这个key码要放在AndroidManifest.xml里面

 

 

 具体放的位置如下:这里画红线的位置就是上面key的值

 

 其次引入网络访问的权限

    <!--允许访问网络,必选权限-->
    <uses-permission android:name="android.permission.INTERNET" />

    <!--允许获取粗略位置,若用GPS实现定位小蓝点功能则必选-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

    <!--允许获取设备和运营商信息,用于问题排查和网络定位,若无gps但仍需实现定位小蓝点功能则此权限必选-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <!--允许获取网络状态,用于网络定位,若无gps但仍需实现定位小蓝点功能则此权限必选-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <!--允许获取wifi网络信息,用于网络定位,若无gps但仍需实现定位小蓝点功能则此权限必选-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <!--允许获取wifi状态改变,用于网络定位,若无gps但仍需实现定位小蓝点功能则此权限必选-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

    <!--允许写入扩展存储,用于数据缓存,若无此权限则写到私有目录-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!--允许写设备缓存,用于问题排查-->
    <uses-permission android:name="android.permission.WRITE_SETTINGS"
        tools:ignore="ProtectedPermissions" />

    <!--允许读设备等信息,用于问题排查-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

然后去官网下载jar包 相关下载-Android 地图SDK | 高德地图API (amap.com)

 

 这里我用的是3DMap ,然后一股脑放到libs文件夹下,注意libs不是src下的,可以这么做但没必要

 

然后把jar包as library 

最后是两位重量级人物,我搞了半天

 

 

 在build.gradle文件里面 去写sourceSets和ndk

这里需要解释一下,sourceSets下面的jniLibs.srcDirs = [  ] 后面放的是libs相对于build.grade的路径 因为默认都在同一文件夹下,所以写libs就好

然后ndk下的abiFilters应该从字面意思来看就是过滤器,这里的Filters后面对应的四个参数也就是我们在libs文件夹下面的四个子文件夹

因为一开始我的虚拟机设备是只支持x86_64 ,我没引入x86_64 ,就意味着你的设备用不了人家的SDK,四个参数都写上就好。

        try{
            AMapLocationClient.updatePrivacyShow(this,true,true);
            AMapLocationClient.updatePrivacyAgree(this,true);
        }
        catch (Exception e){
            e.printStackTrace();
        }

        MapView mapView = (MapView) findViewById(R.id.map);//找到地图控件
//在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
        mapView.onCreate(savedInstanceState);
        AMap aMap = mapView.getMap();//初始化地图控制器对象

这里上面的try catch语句是因为报了如下的错:

确保调用SDK任何接口前先调用更新隐私合规updatePrivacyShow、updatePrivacyAgree两个接口并且参数值都为true,

所以需要上面两行,然后就是在xml里面书写Map标签

 

 

    <com.amap.api.maps.MapView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </com.amap.api.maps.MapView>

最后成功运行结果如下: