Android百度地图开发

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/42614603 

    做关于位置或者定位的app的时候免不了使用地图功能,本人最近由于项目的需求需要使用百度地图的一些功能,所以这几天研究了一下,现写一下blog记录一下,欢迎大家评论指正!

一、申请AK(API Key)

    要想使用百度地图sdk,就必须申请一个百度地图的api key。申请流程挺简单的。

    首先注册成为百度的开发者,然后打开http://lbsyun.baidu.com/apiconsole/key这个网址,添加应用:


    创建应用最重要的一步是【安全码】。安全码是有【数字签名】和【;】和【包名】组成。包名就是你所创建的项目的包的结构,是指AndroidManifest.xml中的manifest标签下的package的值。

    数字签名指Android的签名证书的SHA1值。

    使用keytool工具(jdk自带)查看。

    在控制台下,输入【cd .android】,然后输入【keytool -list -v -keystore debug.keystore】回车,然后提示你输入【秘钥库口令】,输入【android】回车然后就会显示SHA1的值。



数字签名搞定了,然后创建应用就ok了。创建完成之后,应用列表中会显示相应的AK,也就是api key。

二、下载SDK开发包

    打开http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download网址下载sdk,可以全部下载,也可以自定义下载。从V2.3.0之后的版本,SDK的开发包以可定制的形式提供下载,用户可以根据自己的项目需要勾选相应的功能下载对应的SDK开发包。

三、在android项目中引用百度SDK

    1. 将开发包中的jar包和so文件添加到libs文件下。



    2. 在AndroidManifest.xml中添加开发秘钥和所需权限。

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <application  
  2.         android:allowBackup="true"  
  3.         android:icon="@drawable/ic_launcher"  
  4.         android:label="@string/app_name"  
  5.         android:theme="@style/AppTheme" >  
  6.         <meta-data  
  7.             android:name="com.baidu.lbsapi.API_KEY"  
  8.             android:value="填写你申请的AK" />  

    权限:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <!-- 百度API所需权限 -->  
  2.     <uses-permission android:name="android.permission.GET_ACCOUNTS" />  
  3.     <uses-permission android:name="android.permission.USE_CREDENTIALS" />  
  4.     <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />  
  5.     <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />  
  6.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
  7.     <uses-permission android:name="android.permission.INTERNET" />  
  8.     <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />  
  9.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  
  10.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
  11.     <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
  12.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
  13.     <uses-permission android:name="android.permission.BROADCAST_STICKY" />  
  14.     <uses-permission android:name="android.permission.WRITE_SETTINGS" />  
  15.     <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
     3. 在布局文件中添加地图控件:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <com.baidu.mapapi.map.MapView  
  2.         android:id="@+id/bmapview"  
  3.         android:layout_width="match_parent"  
  4.         android:layout_height="match_parent"  
  5.         android:clickable="true" />  
     4. 在应用程序创建时初始化SDK引用的Context全局变量。

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. @Override  
  2. protected void onCreate(Bundle savedInstanceState) {  
  3.     super.onCreate(savedInstanceState);  
  4.     requestWindowFeature(Window.FEATURE_NO_TITLE);  
  5.     //  
  6.     SDKInitializer.initialize(getApplicationContext());  
  7.     setContentView(R.layout.activity_main);  
  8.     init();  
  9. }  

        这里需要注意一下:initialize方法中必须传入的是ApplicationContext,传入this,或者MAinActivity.this都不行,不然会报运行时异常,所以百度建议把该方法放到Application的初始化方法中。

        然后重写activity的生命周期的几个方法来管理地图的生命周期。在activity的onResume、onPause、onDestory方法中分别执行mapview的onReusme、onPause、onDestory方法。

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.bdmap.view;  
  2. import com.baidu.mapapi.SDKInitializer;  
  3. import com.baidu.mapapi.map.BaiduMap;  
  4. import com.baidu.mapapi.map.MapView;  
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7. import android.view.View;  
  8. import android.view.Window;  
  9. public class MainActivity extends Activity {  
  10.     // 百度地图控件  
  11.     private MapView mMapView = null;  
  12.     // 百度地图对象  
  13.     private BaiduMap bdMap;  
  14.     @Override  
  15.     protected void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  18.         //  
  19.         SDKInitializer.initialize(getApplicationContext());  
  20.         setContentView(R.layout.activity_main);  
  21.         init();  
  22.     }  
  23.   
  24.     /** 
  25.      * 初始化方法 
  26.      */  
  27.     private void init() {  
  28.         mMapView = (MapView) findViewById(R.id.bmapview);  
  29.     }  
  30.     @Override  
  31.     protected void onResume() {  
  32.         super.onResume();  
  33.         mMapView.onResume();  
  34.     }  
  35.     @Override  
  36.     protected void onPause() {  
  37.         super.onPause();  
  38.         mMapView.onPause();  
  39.     }  
  40.     @Override  
  41.     protected void onDestroy() {  
  42.         mMapView.onDestroy();  
  43.         mMapView = null;  
  44.         super.onDestroy();  
  45.     }  
  46. }  

     完成以上步骤,此时就可以完成一个简单的”Hello Map“程序了。

猜你喜欢

转载自blog.csdn.net/guankai1990/article/details/53434174