Android简单集成高德地图API
首先进入高德官网 高德开放平台 | 高德地图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>
最后成功运行结果如下: