因为最近需要开发一个基于地图的安卓应用,于是来研究一下百度地图SDK的用法。由于百度地图SDK经历过一个比较大的变化,因此搜索到的许多讲旧版本用法的博客内容已经不适应现在的开发需求了,根据官网的帮助并且参考一些博客找到了新API的用法,把它发出来,希望能帮到有需要的朋友。
1、下载百度地图SDK
下载地址:http://lbsyun.baidu.com/sdk/download
如图页面:
2、创建一个Android应用
这个相信不需要我赘述
3、解压下载好的压缩包
解压后,可以发现在文件夹中有一个文件夹叫做libs,将这个文件夹整体复制到应用工程的根目录下(当然,我们最主要需要的是其中的支持jar包以及so文件),目录结构如图所示:
4、build path
选中libs中的所有jar包,然后右键,找到build path,再选择里面的Add to build path,这样一来,我们的工程就可以使用这些包中的接口了。
5、在AndroidManifest.xml文件中进行相关注册
代码如下:
<span style="font-family:KaiTi_GB2312;font-size:14px;"><!--(1)获取各种必需的权限-->
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!-- 用于读取手机当前的状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- 访问网络,网络定位需要上网 -->
<uses-permission android:name="android.permission.INTERNET" />
</span>
<span style="font-family:KaiTi_GB2312;font-size:14px;"><!--(2)获取屏幕支持-->
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="false"
android:resizeable="true"
android:smallScreens="true" /></span>
<span style="font-family:KaiTi_GB2312;font-size:14px;"><!--(3)注册一个application-->
<application
android:name=".DemoApplication"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:allowBackup="true"
android:hardwareAccelerated="true"> </span>
(4)既然这里提到了application,那么我们就需要在src文件夹下创建一个application,代码如下:
<span style="font-family:KaiTi_GB2312;font-size:14px;">package com.tt.mymap;
import android.app.Application;
import com.baidu.mapapi.SDKInitializer;
public class DemoApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
SDKInitializer.initialize(this);
}
}</span>
(5)添加KEY(这是非常重要的一步)
<span style="font-family:KaiTi_GB2312;font-size:14px;"><meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value=""/></span>
此时,我们发现其实现在根本没有API_KEY,因此上述代码中的value也就没有办法填写,于是我们需要申请一个KEY。
6、申请KEY
百度搜索“百度地图API”,得到下图所示页面:
然后点击下面的“申请秘钥”,如果之前没有进行过开发者注册,官网会要求首先进行开发者注册,这时只要根据引导注册即可。
申请好之后,就进入“我的应用”页面:
之后点击“创建应用”,如图;
需要填写应用名称,选择应用类型,当然是Android SDK啦,然后主要是数字签名和包名,
关于数字签名,在eclipse中点击window->preferences->Android->build即可找到,如图:
把我圈中的部分复制粘贴到数字签名的位置即可,然后是包名,包名就是存放java源文件的地方,将那个包的名字复制粘贴到对应位置即可。
这些信息都输入完成后,点击提交即可,然后就可以看到我们申请到的KEY啦!也就是页面中写的AK。
然后将申请到的KEY复制粘贴到AndroidManifest.xml文件的对应位置:
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value=""/>
7、在MainActivity中使用MapView
<span style="font-size:14px;">package com.tt.mymap;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Window;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BaiduMapOptions;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.model.LatLng;
public class MainActivity extends Activity {
@SuppressWarnings("unused")
private static final String LTAG = MainActivity.class.getSimpleName();
private MapView mMapView;
private BaiduMap mBaiduMap;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mMapView = new MapView(this, new BaiduMapOptions());
setContentView(mMapView);//此时,M<span style="font-family:KaiTi_GB2312;">ap</span>View就代替了一般Android应用中的布局文件
mBaiduMap = mMapView.getMap();
}
@Override
protected void onPause() {
super.onPause();
// activity 暂停时同时暂停地图控件
mMapView.onPause();
}
@Override
protected void onResume() {
super.onResume();
// activity 恢复时同时恢复地图控件
mMapView.onResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
// activity 销毁时同时销毁地图控件
mMapView.onDestroy();
}
}</span>
此时,用数据线连接手机,点击运行项目,就可以在自己的手机上看到百度地图啦!当然,这只是最基本的百度地图用法,而事实上,百度提供了一系列功能强大的百度地图
API,可以支持各种不同类型的地图调用。关于其他更复杂和高级的使用方法,大家可以到官网上去下载官方提供的示例代码,并且可以参考官方的API。