今天交大家咋么来接入百度地图的SDK,步骤其实和百度官网上的开发指南一样,写下来做做总结。
1. 注册百度开发者账号,直接到官网注册就行,如果没有注册,你在获取秘钥的时候系统会提醒你注册。百度的LBS的首页网址是:
http://developer.baidu.com/map/index.php?title=%E9%A6%96%E9%A1%B5
2. 有了百度开发者账户后就可以去申请要开发的APP,由于百度SDK需要和App绑定,在创建APP的时候需要提供android秘钥和package包名,可参考链接:
http://developer.baidu.com/map/index.php?title=androidsdk/guide/key
(1)创建应用页面:
(2)安全码获取方式:(上面百度链接里面有,我这里采用的是eclipse方法)
选择Window -> preferences -> Android -> Build -> 红色框区域(红色框区域就是sha1的值)
需要填入的安全码是: sha1 秘钥 + " ; " + 包名
sha1 秘钥:
包名:
然后确定就可以生成apk:(图中红色框框住的就是接下来步骤我们需要配置进注册app的key
3. 下载百度地图SDK:
http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download
下载解压之后是下面这三个包: 文档 -> lib库 -> 实例
然后解压lib库就可以得到我们要的jar包 和 so文件:
4. 在项目中引入百度地图:
1. 创建项目,这里注意,我们前面申请app的时候其实就应该已经注册好了项目,app和sdk应该是绑定好的,所以这里我们用前面注册好的项目。我的项目叫MapDemo.
2. 在项目文件夹下创建 libs/ 文件夹,如果用eclipse的创建项目的话,应该已经有了。
这里有两个步骤:(1)将 baidumapapiXXXXXX.jar 拷贝到 libs/ 的根目录 ; (2)在lib/ 下创建文件夹 armeabi/ 目录,并且把 libbaiduMapXXX.so 拷贝进去。 完成之后
3. 项目右键 -> Properties -> Java Build Path -> Libraries -> add External Jars -> 选择硬盘目录下的jar包文件,然后引入
4. 引入包之后我们就可以使用百度SDK来开发了:
这里先贴一个官方文档的地址:http://developer.baidu.com/map/index.php?title=androidsdk/guide/hellobaidumap
(1) 首先在 AndroidMainefest.xml 文件中添加:
<1> 在application标签下添加:
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="刚刚申请app时候产生的ak值" />
<2>添加权限:
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<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.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
图:
(2) 修改layout配置文件,引入百度map控件:
<com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" />
(3) 修改MainActivity.java
package com.example.baidumapdemo; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.MapView; import android.os.Bundle; import android.app.Activity; import android.view.Menu; 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 public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override protected void onDestroy() { super.onDestroy(); mMapView.onDestroy(); } @Override protected void onResume() { super.onResume(); mMapView.onResume(); } @Override protected void onPause() { super.onPause(); mMapView.onPause(); } }
这段代码应该很简单,就是初始化库,并且在activity 生命周期中调用 MapView的生命周期,好了,这样就完事儿了:
SDKInitializer.initialize(getApplicationContext());
5. 运行app程序:(注意这里千万不要在模拟器上运行,会报不能加载SDK库的错误,直接在真机上运行就OK了),运行结果:
OK,大功告成,结束。