前言:
从山东回来北京很久了,找到新的工作也有一个多月,以前从来没有写过博客,也从没想过写一些东西,在山东的时候时间比较忙,经常加班,个人性格也比较懒,一直在项目经理和组长的照顾下成长,新的公司是个物联网公司,做智能消防的,目前只有我一个人做Android方面,没有需求,没有接口文档,没有项目经理,只是跟我说了大概功能,所以我打算一点点研究,最近一段时间把大概框架敲完了,没有什么事做了,感觉脑子不运动就会生锈,最近一直看在看别人的博客,今天也体验下,写的不好还请见谅,闲话不多说了,开始研究百度地图如何使用了~
查看官网
首先我们需要来到百度地图SDK的官网:http://lbsyun.baidu.com/ 并且注册一个账号
找到
开发—Android开发—Android地图SDK
申请密钥
登陆百度账号右上角进入API控制中心
选择创建应用
这里有必要介绍下一下如何获取SHA1,对于一些新(wo)的开发者,这个是APK的加密后生成的值,百度地图为了保证AppKey不会有重复,采用了SHA1值+包名后=AppKey 如何获取SHA1值呢?
获取测试的SHA1值
百度地图的开发文档上有几种方式, 但是大部分讲的是签了名的SHA1查看方法,但是如果你只是做个Demo,并没有加密,那么你就需要将你的APK改为.zip格式,如果你没有配置keytools的环境变量,将META-INF文件夹复制到你的java/jdk/bin目录下 并且shift+右键 在bin目录下的命令行里执行 ,如果你配置了直接运行命令行就好
keytool -printcert -file META-INF/CERT.RSA
后,你就可以看到你的SHA1了
这时候你就可以拥有你的AppKey了
注:如果你的项目没有签名的话sha1的是与你的电脑有关,不同电脑的sha1值不同。你的项目如果签名了,不同签名的sha1不同。
下载jar包和配置环境
在相关下载页面下载你所需要的,有一个事例Demo包括了很多功能,也有纯jar包的,如果只是jar包下载后解压是一个libs目录,按照eclipse中的libs的格式一一对应的复制进去,接下来你需要在清单文件里做一些操作`
<application>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="包名+sha1生成的" />
</application>`
当然还有权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
在你所需要的界面使用地图的布局控件
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
你必须在你的代程序创建时初始化SDK,否则会报错
当然你最好在Application中初始化,毕竟你后面还会需要定位以及其他功能
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
}
}
最后一步就是开启你的地图界面了
public class MainActivity extends Activity {
MapView mMapView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
//获取地图控件引用
mMapView = (MapView) findViewById(R.id.bmapView);
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
}
这个时候你就可以运行你的项目并且看到天安门了~
第一次写博客,很基础,也很简单,作为一个程序员,大部分代码都是复制粘贴或者使用别人的东西,以前只是找到了需求融入到了我的代码里就算完成了,但是回想一下其实自己并没有学到什么,这样是无法进步的,所以不论工作几年,把自己所遇到的问题和技术记录下来,日后回顾下都会显得很简单,并且和别人分享研究的喜悦,敲起代码来 也不会显得那么枯燥了~