高德地图(一)之简单集成

谈集成方案,无非就是按照官方文档搞一遍。这里不多赘述,和别的博客差不多,都是直接贴过程。
我这里使用Android Studio,不再使用添加jar包,so文件的方案了。直接通过Gradle来集成。

一、申请Key

声明:该部分截图来自官网
注册完账号,进入后台,直接按照下图进行。


关于SHA1值获取,这里只说通过CMD来获取的方式:
进入key文件所在路径,通过
keytool -list -v -keystore key名字
来获取
如下图:

二、在Android Studio中集成

这里仅通过gradle集成。个人感觉更快速方便。

  • app gradle文件

    1
    2
    3
    4
    5
    6
    7
    8
    9

    //3D地图
    compile 'com.amap.api:3dmap:latest.integration'
    // 定位功能
    compile 'com.amap.api:location:latest.integration'
    // 搜索功能
    compile 'com.amap.api:search:latest.integration'
    //2D地图
    compile 'com.amap.api:map2d:latest.integration'
  • 清单文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!--用于写入缓存数据到扩展存储卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<!--用于申请获取蓝牙信息进行室内定位-->
<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>

application里面添加如下

1
2
3
4
5
6
7
8
9
10

<application ...>
<!--高德地图集成-->
<!--高德地图开始-->
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="你申请的key"/>
<service android:name="com.amap.api.location.APSService"></service>
<!--高德地图结束-->
</application>
  • 代码混淆
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

3D 地图 V5.0.0之前:
-keep class com.amap.api.maps.**{*;}
-keep class com.autonavi.amap.mapcore.*{*;}
-keep class com.amap.api.trace.**{*;}

3D 地图 V5.0.0之后:
-keep class com.amap.api.maps.**{*;}
-keep class com.autonavi.**{*;}
-keep class com.amap.api.trace.**{*;}

定位
-keep class com.amap.api.location.**{*;}
-keep class com.amap.api.fence.**{*;}
-keep class com.autonavi.aps.amapapi.model.**{*;}

搜索
-keep class com.amap.api.services.**{*;}

2D地图
-keep class com.amap.api.maps2d.**{*;}
-keep class com.amap.api.mapcore2d.**{*;}

导航
-keep class com.amap.api.navi.**{*;}
-keep class com.autonavi.**{*;}

注意:这里要提醒一点是,申请key的时候如果只填写了发布版是SHA1值,个人建议在Gradle中添加下面的代码,可以在debug中正常使用key

1
2
3
4
5
6
7
8
9
10
11

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug {
signingConfig signingConfigs.release//使用签名文件
}
}

三、实现效果

基本配置完成了,剩下的就是在app里展示地图效果了

布局

1
2
3
4
5
6

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

代码

1
2
3
4
5
6
7
8
9

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
mapView.onCreate(savedInstanceState);
aMap = mapView.getMap();
}

效果
只进行了初始化,并不能定位到你所在位置。

这里写图片描述

更多请查看第二篇高德地图(二)之显示定位,比例尺和添加Marker