最新高德地图使用——申请key、显示地图

之前在做大创的时候,就用到了高德地图,但是当时是为了赶项目,所以只是按照官方的demo代码搬运了过来,而具体哪个类是干什么的根本不清楚,而且一个完整的流程也是很模糊。现在再次用到了这个东西,所以觉得一定要好好研究一下,为了以后用的更方便,总不能每次都搬运人家官方的demo吧-。=。

今天这篇是最基础的一篇,我会从申请高德API的key开始走一遍流程,因为相信大家跟我一样,看官网给的代码都已经晕头转向了(他写的实在是太乱了)。

接下来我们按照申请的流程一步一步的实现高德地图的API使用:

一、申请和配置

首先来看一下申请和配置的流程:

1、申请注册成为开发者。

这一步应该不用怎么说吧,大家自己都会注册账号密码什么的。。

2、申请应用key

①首先点开控制台,点击应用管理:


我这里已经有了四个应用,如果是刚刚创建的话是没有的。

②点击右上角创建应用:


应用名称随便填,应用类型也随便填。点击创建

我们创建好了之后会在应用中显示刚刚创建和已经创建的应用。

③点击右上角添加新Key


我们只说一下获取这两个安全码SHA1:

2.1.调试版:我们打开Android Studio,点击gradle projects(默认在右侧),app->Tasks->android->signingReport。


双击后,他会给我们调试版的安全码SHA1。这个测试版的安全码我们就可以填入了。


2.2.发布版:这个需要我们找到自己的签名证书文件,如果没有的话,下面笔者带着大家申请一个:

  1. 申请签名证书文件
  2. 打开终端或者Terminal,获取正式版安全码SHA1。
2.2.1申请签名证书文件:

关于申请签名证书文件的方式有很多,可以通过终端,也可以通过Android  Studio,个人比较喜欢用Android Studio(可能是因为比较懒吧-。+!!)。

点击Generate Signed APK 。


他会出现一个这样的界面。在第一行中的Key Store path中指定我们签名文件的路径,如果没有的话点击Create new...


随便填,只要你能记得住就行,Validity为签名文件有效时间,当然我们肯定用不了这么长时间的。点击ok。

然后退出Generate signed APK,因为我们只是为了生成一个签名证书文件,又不是发布正式版的APK。


2.2.2打开终端或者Terminal。

推荐大家使用Terminal,因为Android Studio已经集成了,用起来比较方便(本人就是懒-。+)。

首先要移动到我们刚刚生成的签名证书文件的路径下。


然后输入以下代码:

keytool -list -v -keystore 这是我们刚刚创建的签名证书文件的名字

点击enter,


他会出现让我们输入密匙口令,这个就是我们刚才创建签名文件的时候自己设置的。


现在我们就获取到正式版的SHA1安全码了。


现在我们将测试安全码和正式安全码填入,下面的包名我们在AndroidManifest.xml中自己就可以查找。不多说。

我们看到现在已经应用中已经有了key。


3、在Project中添加配置。

我们从官方下载的SDK解压后如下:


我下的是6.3.0的版本:


3.1.导入jar包。
3.1.1.我们将里面的jar包放入app/libs文件目录下。


因为我已经导入了,在大家那里应该是看不到jar包前面的这个小箭头的。

3.1.2.导入jar包

导入jar包的方式有两种:

一种是最暴力的,直接点击File->Sync Project with Gradle Files ,将所有libs目录下的jar包全部导入。

另一种是我们选择将哪个jar包导入。File->Project Structure ->Dependencies -> + ->Jar dependency->找到自己Application Project的路径,->libs中选择自己想要导入的jar包。

个人觉得还是第二中比较好,因为不必要的jar包导入让整个app看着很胖。


3.2.放入.so文件

放入.so文件同样有两种方式:使用默认配置(不修改build.gradle)和修改build.gradle配置。

使用默认配置:将解压缩剩下的(除了jar包)的文件夹放入src/main/jniLibs文件夹下(没有自己创建,在几版本的Android Studio中我记得添加jni就会自动创建这个目录)

修改build.gradle:将文件夹放入刚才的app/libs目录。然后打开build.gradle。

在android下添加如下标签:

android {
    compileSdkVersion 26
    defaultConfig {
        ......
        /*sourceSets{
            main{
                jniLibs.srcDirs = ['libs']
            }
        }*/
    }
    ......
}

注释掉的部分,因为本人比较懒,所以用的默认配置-。+。


3.3.在AndroidManifest.xml中进行配置。
3.3.1.权限声明

我们开发肯定需要一系列权限的声明(我直接打出来了,大家复制粘贴吧23333):

<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>
3.3.2.在Application标签中加入 meta-data标签
<meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="07e23534b69a1ea1dd7b17cc2812142c" />

其中name一定要这样写,value就是我们刚才申请的key。

3.3.3.声明Service组件
<service android:name="com.amap.api.location.APSService"/>


到现在为止我们申请和配置的工作就做完了(感觉也不是很多是吧!)


二、显示地图

由于篇幅的原因,我们今天只看一下如何显示地图以及显示定位蓝点。

1、在layout中添加地图容器。

这个是一个很没有操作的事情,我们默认一般都使用mapview,官方还提供了6中容器用来显示地图。

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

2、使用AMap类。

这个AMap类可以说是一个很重要的类,他是地图的控制器类,主要负责的工作有:

  • 地图模式切换(黑夜、卫星......)
  • 改变地图状态(旋转角度、俯仰角、中心坐标、缩放级别等)
  • 添加标记点(Marker)
  • 绘制几何图形(Polyline、Polyon、Circle等)
  • 事件监听(点击、手势)

下面我们一起看一下AMap类的主要方法:

限定符

返回值

方法名

介绍

字段

public final 

void

setMapType(int)

设置地图模式

MAP_TYPE_NORMAL  普通

MAP_TYPE_SATELLITE 卫星

MAP_TYPE_NIGHT 夜间

MAP_TYPE_NAVI 导航

MAP_TYPE_BUS 公交

public final

int

getMapType()

获取地图模式


public final

UiSettings

getUiSettings()

获取地图UI控制器


public final

void

setMylocationStyle(MyLocationStye)

设置定位小蓝点(坐标位置)


public final

void

setMylocationEnabled(boolean)

设置是否启动定位蓝点

true:启动显示

false:隐藏定位蓝点,并不定位

默认false

public final

void

setTrafficEnabled(boolean)

设置是否打开交通图层

true:打开

false:不打开

默认true

public final

boolean

isTrafficEnabled()

获取是否已打开交通图层


public final

void

showMapText(boolean)

设置是否打开文字标注

默认true

public final

void

showIndoorMap(boolean)

设置是否显示室内地图

默认false

public final

void

showBuildings(boolean)

设置是否显示3D建筑

默认true

这里面涉及到两个其他的类:MyLocationStyle类和UiSettings类。我们今天主要看一下MyLocationStyle类:

3、MyLocationStyle类介绍

MyLocationStyle类为定位小蓝点的绘制样类。方法如下:

限定符

返回值

方法名

介绍

字段

public

MyLocationStyle

myLocationIcon(BitmapPescriptor)

设置定位蓝点的图标


public

MyLocationStyle

anchor(float u,float v)

设置定位图标锚点的偏移量


public

MyLocationStyle

radiusFillColor(int color)

设置圆形区域的填充颜色


public

MyLocationStyle

strokeColor(int color)

设置圆形区域的边框颜色


public

MyLocationStyle

strokeWidth(float width)

设置圆形区域的边框宽度


public

MyLocationStyle

inteval(long interval)

设置连续定位请求间隔


public

MyLocationStyle

showMyLocation(boolean visible)

是否显示蓝点图标

默认true,false情况会定位,但是图标不显示

public

MyLocationStyle

myLocationType(int type)

设置位置展示模式

_SHOW 只定位一次

_LOCAE 只定位一次,且将视角移动到地图中心点

_FOLLOW 连续定位,将视角移动到中心点,定位蓝点随设备移动。

_MAP_ROTATE 连续、视角移动到中心点,地图依照设备防线旋转,定位点随设备移动

_LOCATON_ROTATE 连续、视角移动到中心点,定位点照地图方向旋转,跟设备移动。

_LOCATION_ROTATE_NO_CENTER

_MAP_ROTATE_NO_CENTER

_FOLLOW_NO_CENTER

后面这三个对应上面的三个,只是不一定到地图中心点

可以看出MyLocationStyle是支持链式编写。


有了上面的这些方法介绍,相信大家已经知道如何去显示一个地图了,下面直接给大家带来一个代码栗子了:

private void initMap(Bundle savedInstanceState) {
        location = (TextView) findViewById(R.id.sample_text);
        location.setText(stringFromJNI());
        mapView = (MapView) findViewById(R.id.map);
        mapView.onCreate(savedInstanceState);
        if (aMap == null) {
            aMap = mapView.getMap();   //获取到aMap实例,从地图容器中获取
        }

        MyLocationStyle myLocationStyle;
        myLocationStyle = new MyLocationStyle();//初始化定位蓝点样式类

        myLocationStyle.radiusFillColor(getColor(R.color.colorAlphaRed));//设置圆形区域填充颜色为红色

        myLocationStyle.interval(5000); //设置连续定位模式下的定位间隔,只在连续定位模式下生效

        myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_MAP_ROTATE_NO_CENTER);//连续定位、蓝点不会移动到地图中心点,地图依照设备方向旋转,并且蓝点会跟随设备移动。

        aMap.setMyLocationStyle(myLocationStyle);//设置定位蓝点的Style

        aMap.getUiSettings().setMyLocationButtonEnabled(true);  //设置默认定位按钮是否显示,非必需设置。
        aMap.setMyLocationEnabled(true);// 设置为true表示启动显示定位蓝点,
        aMap.showIndoorMap(true);//室内定位开启

        aMap.setMapType(AMap.MAP_TYPE_NIGHT);//地图类型设为夜晚

}

效果如下:


由于模拟器无法实现地图定位,所以只能用真机截个图了!!!

好了,关于高德地图初次使用就到这里了,下一篇中会给大家介绍如何实现定位功能。

喜欢的朋友,如果感觉对你有所帮助的话,希望支持关注一波!!!

 
 

猜你喜欢

转载自blog.csdn.net/zy_jibai/article/details/80743212
今日推荐