一,开发工具
- 编译工具:idea
二,代码编写
1,配置百度地图
- 密钥申请
首先是Sha1获取
在控制台页面或者idea自带的控制台页面,进入到自己的用户文件夹下,找到 debug.keystore 文件,一般是这个目录
然后复制 debug.keystore 文件路径C:\Users\17954.android\debug.keystore
在idea命令行敲如下命令
keytool -list -v -keystore C:\Users\17954\.android\debug.keystore
密码默认是android
进入后复制下方的sha1码
然后是包名
打开build.gradle 这个要是自己的app下配置目录
同样复制
输入之后就能到自己的控制台了。
2,下载百度地图SDK
- 百度地图SDK下载
这里下载记得要勾选定位
解压后把里面的文件复制到开发工具的 libs下 - 在app目录下的build.gradle文件中android块中配置sourceSets标签,如果没有使用该标签则新增,详细配置代码如下
sourceSets {
main {
jniLibs.srcDir 'libs'
}
}
- 导入依赖
打开setting下的project Structure
这里我是导入过了的
未导入则点击加号,然后jar,选择libs下的jar包就好
选择之后apply,等待框架构建,可以发现工作目录下多了一个文件夹,以及多了几行代码
3,项目配置
前面就算是基本的准备流程了,再来是项目的具体应用
1.配置AndroidManifest.xml文件中添加
<application>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="开发者 key" />
</application>
开发者 key就是控制台中的ak
以及在外层添加
<!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,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" />
2,添加控件
在布局文件xml中添加
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
由于是不支持直接拖拽的,要以代码形式添加
3,创建运行类
public class DemoApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
SDKInitializer.initialize(this);
//自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
//包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
SDKInitializer.setCoordType(CoordType.BD09LL);
}
}
在AndroidManifest.xml文件中声明该Application
android:name=".DemoApplication"
这个是加在 application 标签内的
4,编写执行类
这里以主控制类为例
public class MainActivity extends AppCompatActivity {
private MapView mMapView=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView