談集成方案,無非就是按照官方文檔搞一遍。這裏不多贅述,和別的博客差不多,都是直接貼過程。
我這裏使用Android Studio,不再使用添加jar包,so文件的方案了。直接通過Gradle來集成。
一、申請Key
聲明:該部分截圖來自官網
註冊完賬號,進入後臺,直接按照下圖進行。
關於SHA1值獲取,這裏只說通過CMD來獲取的方式:
進入key文件所在路徑,通過
keytool -list -v -keystore key名字
來獲取
如下圖:
二、在Android Studio中集成
這裏僅通過gradle集成。個人感覺更快速方便。
- app gradle文件
//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'
- 清單文件
<!--用於進行網絡定位-->
<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裏面添加如下
<application ...>
<!--高德地圖集成-->
<!--高德地圖開始-->
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="你申請的key"/>
<service android:name="com.amap.api.location.APSService"></service>
<!--高德地圖結束-->
</application>
- 代碼混淆
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
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug {
signingConfig signingConfigs.release//使用簽名文件
}
}
三、實現效果
基本配置完成了,剩下的就是在app裏展示地圖效果了
佈局
<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>```
代碼
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
mapView.onCreate(savedInstanceState);
aMap = mapView.getMap();
}
效果
只進行了初始化,並不能定位到你所在位置。
更多請查看第二篇高德地圖(二)之顯示定位,比例尺和添加Marker