在现在很多的的APP中,都需要用到地图功能, 今天说说怎么在app 中显示地图,这也是地图最基础的功能。
一,在AndroidManifest.xml文件中添加百度地图需要的权限
<!-- baidu map start -->
<uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" ></uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE" ></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" ></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" > </uses-permission>
<uses-permission android:name="android.permission.INTERNET" ></uses-permission>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" ></uses-permission>
<!-- <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"></uses-permission> -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" ></uses-permission>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" > </uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.CAMERA" > </uses-permission>
<uses-permission android:name="android.permission.RECORD_AUDIO" ></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" ></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" ></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
二,在AndroidManifest.xml文件的Application 的标签下 添加
<!-- api_key是根据证书创建出来的,每台电脑证书不一样,换电脑就必须重新申请key,把申请到的key,添加到value 后面 -->
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" />
三,到百度地图的官网 申请key,网址:http://lbsyun.baidu.com/apiconsole/key
没有帐号 先注册,成为百度开发者。
要点击创建应用,
填写你创建项目的应用名称,应用类型是Android SDK,
发布版SHA1与开发版SHA1
这两个版本号 我弄的一样的,打开eclipse–>Window—>preferences—->android—>build 如下图:
复制SHA1 fingerprint 的值,粘贴到发布版SHA1与开发版SHA1 的输入框中,再输入包名,在AndroidManifest.xml文件中 可以找到包名。 如下图:
然后提交,就可以得到生成的key .
如下图:
把生成的KEY ,复制粘贴到第二步的value值中,
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" />
四,下载百度地图所要用到的SDK
网址:http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download
Android SDK v3.7.3 版本中,用户可以自定义下载自己所需要的功能的SDK
把开发包中的 jar包与so 文件导入到eclipse 中
五,layout中的布局文件
<com.baidu.mapapi.map.MapView
android:id="@+id/mapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#fff"
android:clickable="true" />
六,在程序的onCreate()方法中,初始化SDK 参数是getApplicationContext();
mMapView的生命周期方法
// 百度地图控件
private MapView mMapView;
// 百度地图对象
private BaiduMap bdMap;
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
SDKInitializer.initialize(getApplicationContext());
try {
Log.i("MainFragmentActivity", "onCreate()");
setContentView(R.layout.main_fragment);
init();
/**
* 初始化控件
*/
private void init() {
mMapView = (MapView) findViewById(R.id.mapView);
}
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mMapView.onPause();
}
@Override
protected void onDestroy() {
mMapView.onDestroy();
mMapView = null;
super.onDestroy();
}
通过以上六步,已经能显示基本的百度地图了。
未完待续!