Android Studio调用高德地图api

前言:

       在成功实现调用高德地图api的过程中我真的是遇到了很多的问题,感觉简直是把能遇到的各种问题都遇到了,比如同时导入了jar包和.so文件在运行时发现两者之间可能有冲突,或解决了该冲突之后,成功运行,但地图并不显示,显示为白屏等,在这个期间我做了很多的尝试,比如调整了targetSdk、Gradle的版本,按照其他资料注释了setting.gradle里面的部分内容,添加android:hardwareAccelerated="true"该句进行硬件加速等但都没有解决这个问题。

      为了解决这个问题,我将所有流程重新又进行了一遍,最终发现我这边的白屏可能是由两个问题导致的:在进行地图SDK下载时我选择了前者,可能和我的版本不太符合,之后改选了地图SDK旧版下载后没有出现文件冲突的问题,我想可能旧版的比较稳定吧;其次是我一开始建jniLibs时将它和libs同级了,正确的应该是建在src/main/下面。下面我把我运行成功的步骤分享一下,希望可以帮助到有需要的友友们~(下面需要的包可在资源中进行下载

一.搜索高德开放平台,进行注册并登录,进入到自己的控制台,打开应用管理下的我的应用,点击创建新应用。

1.关于获取发布版安全码SHA1的过程如下:

       打开Android Studio下方的Terminal,并自行找到.android在电脑中的位置,找到了之后,按照下图所示:

      之后执行 keytool -list -v -keystore 签名文件的位置(即.keystore的位置),如下图所示:

      若出现这个问题,则需要找到JDK的安装路径的bin子目录(里面有keytool.exe工具),这里若出现找不到该命令的提示,则说明还未在PATH环境变量中增加%JAVA_HOME%/bin路径。找到之后如下图所示:

      默认口令为android,输入正确后,即可获得SHA1安全码,如下图所示:

 2.关于包名如何获得?

      填入后点击提交,即可获得key,后续会使用,如下图所示:

 二.下载Android 地图SDK并设置相关权限。

      下载后进行解压,会得到如图所示:

      之后将最后面的那个jar包放到工程libs里面,并右键点击Add As Library... 将该jar包加载到build.gradle中,之后在src/main下面建jniLibs子目录,将上图前五个文件复制进去,就会得到如下图所示:

       之后在AndroidManifest.xml设置相关的权限:

<!--允许程序打开网络套接字-->
    <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" />
    <!--用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <!--用于访问GPS定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    <!--用于读取手机当前的状态-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
    <!--用于申请调用A-GPS模块-->
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>

      同时在该文件application中添加如下代码:

 <meta-data android:name="com.amap.api.v2.apikey" android:value="前面获取到的key值">
        </meta-data>

      设置好这些权限之后就来到了显示地图的部分。

 三.显示地图。

      设置布局文件,代码如下所示:

<com.amap.api.maps.MapView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/mapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
</com.amap.api.maps.MapView>

       java中调用关键代码如下所示:

 private AMap aMap;
 MapView mMapView = null;
       //获取地图控件引用
        mMapView = (MapView)findViewById(R.id.mapView);
        //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
        mMapView.onCreate(savedInstanceState);

       //初始化地图控制器对象
        if (aMap == null) {
            aMap = mMapView.getMap();
        }
@Override
    public void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图
        mMapView.onDestroy();
    }
    @Override
    public void onResume() {
        super.onResume();
        //在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图
        mMapView.onResume();
    }
    @Override
    public void onPause() {
        super.onPause();
        //在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制
        mMapView.onPause();
    }
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态
        mMapView.onSaveInstanceState(outState);
    }

      通过以上操作之后,点击运行,地图就可以显示出来了,如下图所示。

 以上便是我成功的一次操作,希望可以帮助到大家,喜欢的可以点赞收藏噢~

  • 15
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值