etzt 2020-04-16
在使用百度地图API之前需要先在百度地图开放平台中申请API_KEY
http://lbsyun.baidu.com/index.php
登录百度开放平台后找到控制台下的应用管理-创建应用
依次输入应用名,应用类型选择Android SDK
然后下面需要输入发布版SHA1和包名
首先来到.Android文件所在的位置,默认位置如下
如果修改过就要到修改的路径下。
AndroidStudio修改默认C盘配置文件夹(.android.gradle.AndroidStudio)以及修改后避免踩的坑:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103791948
我这里是修改过,所以这里的路径是在D:\Android
在此路径下打开命令行窗口。
这里采用使用JDK自带的keytool工具生成
keytool默认路径:C:\Program Files\Java\jdk1.8.0_181\bin
然后将keytool.exe拖到上面打开的.Android所在路径命令行窗口中,然后再后面输入
-list -v -keystore debug.keystore
回车。然后提示输入密钥库命令,直接回车
然后就可以在证书指纹中获取SHA1
然后再回到百度开放平台点击提交。就可以获取开发密钥了。
然后再回到百度开放平台中开发文档下的Android开发下Android地图SDK
然后选择自定义下载
然后这里只勾选几个基本功能,具体功能根据自己需求勾选,然后点击下方的开发包和示例代码进行下载
使用AndroidStudio新建项目,将项目视图由Android切换为Project
这样就会显示libs目录,然后解压上面下载的开发包,可以看到其下面libs目录下两个jar包,将其复制到项目的lib下
然后选中这两个jar包右键Add As Library,添加到库
然后在src/main下新建JNIlibs目录
然后将上面SDK下libs下的所有目录复制到此目录下
然后将项目切换回Android视图下,打开activity_main.xml修改布局文件
将布局修改为相对布局,并添加百度地图组件,并设置id
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <com.baidu.mapapi.map.MapView android:id="@+id/bmapview" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true"/> </RelativeLayout>
然后来到MainActivity.java中,首先声明地图组件然后再onCreate方法中初始化地图SDK,注意初始化地图SDK
的代码要放在setContentView的代码前。
然后还需要分别设置地图组件的声明周期。
package com.badao.baidumap; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.MapView; public class MainActivity extends AppCompatActivity { private MapView mapView;//声明地图组件 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //初始化地图SDK SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); mapView = (MapView) findViewById(R.id.bmapview); } @Override protected void onPause() { super.onPause(); mapView.onPause(); } @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); mapView = null; } @Override protected void onResume() { super.onResume(); mapView.onResume(); } }
然后打开mainfests下的AndroidManifest.xml
首先添加meta-data标签,内容如下
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="申请的开发密钥"/>
然后进行权限的声明。完整示例代码
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.badao.baidumap"> <!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,POI检索等 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了外置存储区域,则需要申请该权限,否则不需要 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区域,则需要申请该权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="申请的开发密钥"/> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
这块代码可以参照之前在百度开放平台下载的示例代码。
或者可以参照官网的开发指南
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-map/showmap
然后需要将项目运行在可联网的真机或者第三方模拟器上
id=3&hmsr=%E5%BC%80%E5%8F%91%E8%80%85-AI%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF&hmpl=&hmcu=&hmkw=&hmci=