一、基本要点
1、申请百度地图移动版API Key
申请地址与申请方法:http://developer.baidu.com/map/sdkandev-1.htm
2、下载百度地图Android SDK
下载地址与使用说明:http://developer.baidu.com/map/sdkandev-download.htm
3、工程配置
工程配置具体步骤:http://developer.baidu.com/map/sdkandev-2.htm
(1)New一个Android工程,如BDHelloWorld
(2)用BaiduMap_AndroidSDK_v2.3.1_Sample/BaiduMapsApiDemo的libs文件夹覆盖BDHelloWorld的libs文件夹
(3)展开libs文件夹,右键依次选择.Jar格式文件,将其Add to Build Path即可
二、BDHelloWorld
以最简单的helloworld为例检验自己环境搭建与工程配置是否正确,也可以作为后期程序的demo(注意更换KEY)。
源码下载:http://yunpan.cn/Qiq895YSEChgA 访问密码 eed1
1、AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="baidumapsdk.bdhelloworld" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="15" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="XAB40cM2opwkAc4ydBeCvmwP" /> <activity android:name="baidumapsdk.bdhelloworld.MainActivity" android:configChanges="orientation|keyboardHidden" android:label="@string/app_name" android:screenOrientation="sensor" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <!-- 使用网络功能所需权限 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > </uses-permission> <uses-permission android:name="android.permission.INTERNET" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" > </uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" > </uses-permission> <!-- SDK离线地图和cache功能需要读写外部存储器 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" > </uses-permission> <uses-permission android:name="android.permission.WRITE_SETTINGS" > </uses-permission> <!-- 获取设置信息和详情页直接拨打电话需要以下权限 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" > </uses-permission> <uses-permission android:name="android.permission.CALL_PHONE" > </uses-permission> <!-- 使用定位功能所需权限,demo已集成百度定位SDK,不使用定位功能可去掉以下6项 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" > </uses-permission> <permission android:name="android.permission.BAIDU_LOCATION_SERVICE" > </permission> <uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_GPS" /> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="false" android:resizeable="true" android:smallScreens="true" /> </manifest>
2、activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" /> </LinearLayout>
3、MainActivity.java
package baidumapsdk.bdhelloworld; import com.baidu.mapapi.BMapManager; import com.baidu.mapapi.map.MapController; import com.baidu.mapapi.map.MapView; import com.baidu.platform.comapi.basestruct.GeoPoint; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { BMapManager mBMapMan = null; MapView mMapView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mBMapMan = new BMapManager(getApplication()); mBMapMan.init(null); // 注意:请在试用setContentView前初始化BMapManager对象,否则会报错 setContentView(R.layout.activity_main); mMapView = (MapView) findViewById(R.id.bmapView); mMapView.setBuiltInZoomControls(true); // 设置启用内置的缩放控件 MapController mMapController = mMapView.getController(); // 得到mMapView的控制权,可以用它控制和驱动平移和缩放 GeoPoint point = new GeoPoint((int) (32.062099 * 1E6), (int) (118.768178 * 1E6)); // 用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6),以河海大学设计院为例 mMapController.setCenter(point);// 设置地图中心点 mMapController.setZoom(12);// 设置地图zoom级别 } @Override protected void onDestroy() { mMapView.destroy(); if (mBMapMan != null) { mBMapMan.destroy(); mBMapMan = null; } super.onDestroy(); } @Override protected void onPause() { mMapView.onPause(); if (mBMapMan != null) { mBMapMan.stop(); } super.onPause(); } @Override protected void onResume() { mMapView.onResume(); if (mBMapMan != null) { mBMapMan.start(); } super.onResume(); } @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; } }
4、运行效果
三、注意事项
申请KEY:一个应用对应且仅对应一个ak,修改应用名称需要重新申请一个ak。By the way,修改包的名称是可以的,但是需要重新设置密钥,具体就是修改安全码。
欢迎技术交流个人QQ:805115086,验证请说明自己研究方向。