摘要:
因为工作的原因所以需要用到高德地图,所以开始记录一下。目前已经完成了开发,包括高德地图的缩放功能,逆地址编码,地图底部显示数据等。今天开始从头记录一下,大家以后还是不要写完在记录了,真的会忘记啊!!!
一、申请和配置
首先来看一下申请和配置的流程:
1、申请注册成为开发者。
大家就直接像平时一样到高德地图的开放平台注册账号密码一样。下面这个是到高德地图的地址。
2、申请应用key
①首先点开控制台,点击应用管理:(我已经有三个应用了,没有的话这里是显示为空,接着看下面)
②点击右上角创建应用:
应用名称根据自己的项目创建就可以了,大家随意呀!,应用类型也是根据自己的填,没有看中的选项那就其他,毕竟我们可是高要求的(狗头)。点击创建
我们创建好了之后会在应用中显示刚刚创建和已经创建的应用
③点击右上角添加新Key
1:key名称的命名,不知道你就点击右边的命名规范。(此处略过几十个字)
2:服务平台和可使用服务大家根据自己选。
3:重点讲一下SHA1
3.1、生成申请签名证书文件
首先呢!先查看一下自己的项目有没有一个结尾为jks的文件
没有的话,那就接着看,点击build-Generate Signed Bundle /APK...
就会出现这个(如果项目是没有上面那个结尾的为jks的文件话)。然后点击Create new.. 就会出现下面那个图片。
第一个就是你要存放的路径和写文件的名称,一般是在放项目的最外层,因为后面容易找。然后名为自己Package名。
接着就是密码账号什么的。大家自己填就可以了。(大家要记住密码哈!不要当鱼。密码我们下面要用的)
填完点击OK就可以看到这个
然后退出Generate signed APK,因为我们只是为了生成一个签名证书文件,不是发布正式版的APK。就可以在项目中看到这个我们刚刚生成的
3.2、生成申请签名证书文件
采用Android studio 的Terminal(大家也可以用系统自带的命令窗后,太麻烦我就不写了)
然后输入以下代码:
keytool -list -v -keystore 这是我们刚刚创建的签名证书文件的名字
点击enter,
密码就是我们刚刚设置的密码,输进去(下面的SHA1就是我们要的东东啦!)
大家把这里填到高德地图Key值的申请中。然后在添加包名就可以生成对应的key值啦!!撒花
接着就是开发啦,撸起袖子加油干
3、在Project中添加配置
首先到高德地图的开发文档看看
3.1.导入jar包。
下载对应的文件我们需要添加的jar包;https://lbs.amap.com/api/android-sdk/download/。根据需求选择要添加的功能。
3.1.1.我们将里面的jar包放入app/libs文件目录下。
3.1.2.导入jar包
导入jar包的方式有两种:
一种是最暴力的,直接点击File->Sync Project with Gradle Files ,将所有libs目录下的jar包全部导入。
另一种是我们选择将哪个jar包导入。File->Project Structure ->Dependencies -> + ->Jar dependency->找到自己Application Project的路径,->libs中选择自己想要导入的jar包。
3.2.放入.so文件
放入.so文件同样有两种方式:使用默认配置(不修改build.gradle)和修改build.gradle配置。
使用默认配置:将解压缩剩下的(除了jar包)的文件夹放入src/main/jniLibs文件夹下(没有自己创建,在几版本的Android Studio中我记得添加jni就会自动创建这个目录)
修改build.gradle:将文件夹放入刚才的app/libs目录。然后打开build.gradle。
在android下添加如下标签:
android {
defaultConfig {
ndk {
//设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
//3D地图so及jar
compile 'com.amap.api:3dmap:latest.integration'
//定位功能
compile 'com.amap.api:location:latest.integration'
//搜索功能
compile 'com.amap.api:search:latest.integration'
}
3.3.在AndroidManifest.xml中进行配置。
3.3.1.权限声明
//地图SDK(包含其搜索功能)需要的基础权限
<!--允许程序打开网络套接字-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允许程序设置内置sd卡的写权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允许程序获取网络状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允许程序访问WiFi网络信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允许程序读写手机状态和身份-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
3.3.2.在Application标签中加入 meta-data标签
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="你的key值" />
3.3.3.声明Service组件
<service android:name="com.amap.api.location.APSService"/>
上面我们就完成了高德地图的申请和配置了
二、显示地图
由于篇幅的原因,我们今天只看一下如何显示地图以及显示定位蓝点。
1、在layout中添加地图容器。
<com.amap.api.maps.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
2:在activity中初始化地图
public class MainActivity extends Activity {
MapView mMapView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取地图控件引用
mMapView = (MapView) findViewById(R.id.map);
//在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
mMapView.onCreate(savedInstanceState);
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制
mMapView.onPause();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态
mMapView.onSaveInstanceState(outState);
}
}
3:显示地图
//定义了一个地图view
mapView = (MapView) findViewById(R.id.map);
mapView.onCreate(savedInstanceState);// 此方法须覆写,虚拟机需要在很多情况下保存地图绘制的当前状态。
//初始化地图控制器对象
AMap aMap;
if (aMap == null) {
aMap = mapView.getMap();
}
结果图片