使用百度地图SDK,可以查看地图信息,对地图进行放大查看,或者缩小查看
一、百度API
百度地图API:http://developer.baidu.com/map/
二、搭建地图环境
1、申请百度地图的key
2、下载对应功能的sdk
3、新建一个工程导入sdk到lib里面
1、申请百度地图key
点击 http://lbsyun.baidu.com/apiconsole/key
进入key申请页面如下图,然后点击“创建应用”
点击创建应用后,进入如下图,应用名称可以随便写,应用类型选Android SDK
发布版SHA1的获取方法:
(本人Windows环境下)
win+r 输入cmd,打开dos窗口
1、cd jdk的bin目录下 如我的是 cd C:\Program Files\Java\jdk1.8.0_201\bin
2、找到签名文件存放的目录(如果没有生成的,先生成签名文件,我的签名文件是android.jks)所在目录是D:\android.jks
3、输入命令 C:\Program Files\Android\Android Studio\jre\jre\bin\keytool.exe -list -keystore D:\android.jks
输入命令如上图,如果没有设置密码则可以直接点击回车,如果设置密码了那就是key的密码
开发版SHA1的获取方法和发布版SHA1的获取方法的唯一不同的是命令是
三、创建Androidstudio项目
按照http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-project/androidstudio这里面的步骤来创建一个项目
我的项目目录
1、下载开发包,我是下载了以下几个sdk开发包,根据自己的需求来下载对应的sdk
2、将开发包拷贝至工程(截图以普通地图服务的开发包为例,步骑行导航的开发包同理)
1、添加jar文件
打开解压后的开发包文件夹,找到BaiduLBS_Android.jar文件将其拷贝至工程的app/libs目录下,如图:
2、添加so文件
有两种方法可以往项目中添加so文件。
方法一:
在下载的开发包中拷贝需要的CPU架构对应的so文件文件夹到app/libs目录下,如图:
在app目录下的build.gradle文件中android块中配置sourceSets标签,如果没有使用该标签则新增,详细配置代码如下:
sourceSets {
main {
jniLibs.srcDir 'libs'
}
}
注意:Jar文件和so文件的版本号必须一致,并且保证Jar文件与so文件是同一版本包取出的。
3、往工程中添加jar文件
1、菜单栏选择File -> Project Structure
2、在弹出的Project Structure对话框中选中左侧的Modules列表下的app目录,然后点击右侧页面中的Dependencies选项卡。如图:
3、点击左下角加号“➕”选择Jar dependency,然后选择要添加的jar文件即可(此处为我们拷贝至libs目录下的BaiduLBS_Android.jar) 结果如图:
项目所涉及到的代码‘
activity_main.xml文件的代码
app文件下的build.gradle文件的代码
apply plugin: 'com.android.application' android { compileSdkVersion 28 defaultConfig { applicationId "com.example.wingtech_pc.test1" minSdkVersion 15 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } sourceSets { main { jniLibs.srcDir 'libs' } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation files('libs/BaiduLBS_Android.jar') }
新建一个Java类,DemoApplication
package com.example.wingtech_pc.test1; import android.app.Application; import com.baidu.mapapi.CoordType; import com.baidu.mapapi.SDKInitializer; 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); } }
建完了DemoApplication类需要在AndroidManifest.xml文件添加android:name=".DemoApplication"
AndroidManifest.xml文件的代码,加了meta-data标签,指明了key的值,即刚申请到的AK值,还有百度地图相关的权限指定
MainActivity.java的代码:
package com.example.wingtech_pc.test1; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.baidu.mapapi.map.MapView; public class MainActivity extends AppCompatActivity { private MapView mMapView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取地图控件引用 mMapView = (MapView) findViewById(R.id.bmapView); } @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 onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mMapView.onDestroy(); } } 最终运行结果:
本文章参照了百度地图的官方文档和https://blog.csdn.net/qq_26787115/article/details/50358037