百度地图提供了丰富的API, 可以使我们很方便的调用百度地图实现定位和导航功能。
1. 申请百度开发者账号
要使用百度地图的API,首先可以登录百度开发者的首页(http://developer.baidu.com/),注册一个百度的开发者账号。在开发者首页我们可以看到众多的百度提供的开发工具。选择百度地图,进入百度地图开放平台首页(http://developer.baidu.com/map/)
2. 申请API Key
接下来要申请API Key。只有申请了API Key 才可以在自己的应用中使用百度地图。可以点击“申请密钥”, 也可以点击页面右上角的“API控制台”
在这里会显示所有你已经申请过的API Key。你可以点击“创建应用”来创建一个新的API Key。
应用名称可以随便填;应用类型选择Android SDK;安全码是 数字签名+;+包名。数字签名可以通过Eclipse中的Windows->Preferences->Android->Build 中查看到;包名就是应用程序所在的包。
3. 下载百度地图SDK
如上图,进入SDK下载页面后,选择需要的模块下载。我在这里只下载了地图的功能。
下载成功以后应该是一个压缩包,解压以后如图所示
将其中的.jar 文件和armeabi 目录拷贝到项目的libs目录下就可以了。
4. 调用百度地图API
如何在自己的项目中调用百度地图的API, 百度的Wiki 上有详细的说明http://developer.baidu.com/map/index.php?title=androidsdk/guide/hellobaidumap
1)首先就是先向application 中添加密钥
<application>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="开发者 key" />
</application>
上面value 属性引号中的内容用自己刚刚申请的AK替换。
2)接下来要申明一堆权限
<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" />
3)接下来在布局中添加地图控件
<com.baidu.mapapi.map.MapView
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
4)在Activity中初始化SDK
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);
}
}
5)创建地图Activity,管理生命周期
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();
}
}
至此,百度地图就创建完毕了。
注:在一些较老的资料上提到用BMapManager 创建地图,但这种方法好像在最新版本的SDK中被放弃了。。。已经找不到BMapManager 的类了。