Android百度地图开发(一)环境搭建
1.百度地图官方API文档下载
版本 | 使用说明 | 下载 |
Android SDK 通用资源下载 |
《离线地图》提供新版离线地图(百度矢量地图)与旧版离线地图(百度栅格地图)下载。 备注:
|
离线地图 |
Android SDKv2.2.0 (矢量地图版) |
1. 若需使用Android SDK,请先下载对应版本的lib库,在Android工程中引用jar和so文件。 2. 该版本SDK提供矢量版地图。 3. Lib库和示例代码下载包中均含有readme.txt,可阅读参考,有助您的开发。 4. 若使用离线地图,请下载矢量版离线地图。注意:请参阅开发指南_离线地图说明,导入至BaiduMapSdk文件夹。 5. 注意:自v2.1.3版本起,SDK采用了全新的Key验证体系,如果您选择使用v2.1.3及以后的版本,需申请全新的Key。(点击查看申请流程 ) |
|
Android SDKv1.3.5 (栅格地图版) |
若需使用Android SDK,请先下载对应版本的lib库,在Android工程中引用jar和so文件。 该版本提供栅格版底图。 |
2.申请密钥key
http://developer.baidu.com/map/android-mobile-apply-key.htm
3.建立项目
4.导入jar包
将实例中的libs文件夹拷贝到项目中,然后选中baidumapapi.jar,右键--〉build path-->add to build path
5.在activity_main.xml中添加一个view用来显示地图
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <!-- 添加显示地图的控件 --> <com.baidu.mapapi.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> </LinearLayout>
6.编写MainActivity.java对功能进行实现
package com.arlen.baidu_hello; import android.os.Bundle; import android.view.Menu; import android.widget.Toast; import com.baidu.mapapi.BMapManager; import com.baidu.mapapi.GeoPoint; import com.baidu.mapapi.MKGeneralListener; import com.baidu.mapapi.MapActivity; import com.baidu.mapapi.MapController; import com.baidu.mapapi.MapView; public class MainActivity extends MapActivity { // 添加百度地图的相关控件 private MapView mapView; private BMapManager bMapManager; // 加载地图的引擎 // 百度地图的key private String keyString = "43D220AAB0DEC976D2EABC83CFC9EEE52BCCCA7A"; // 在百度地图上添加一些空间,比如放大或者缩小 private MapController mapComtroller; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mapView = (MapView) findViewById(R.id.bmapView); bMapManager = new BMapManager(MainActivity.this); // 必须要加载key bMapManager.init(keyString, new MKGeneralListener() { @Override public void onGetPermissionState(int arg0) { // TODO Auto-generated method stub if (arg0 == 300) { Toast.makeText(MainActivity.this, "输入的key有误,请核实!", 1) .show(); } } @Override public void onGetNetworkState(int arg0) { // TODO Auto-generated method stub } }); this.initMapActivity(bMapManager); mapView.setBuiltInZoomControls(true); // 表示可以设置缩放功能 mapComtroller = mapView.getController(); // 需要定义一个经纬度 GeoPoint geoPoint = new GeoPoint((int) (39.915 * 1E6), (int) (116.404 * 1E6)); // 设置一个中心点 mapComtroller.setCenter(geoPoint); // 设置缩放级别 mapComtroller.setZoom(12); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if (bMapManager != null) { bMapManager.destroy(); bMapManager = null; } } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); if (bMapManager != null) { bMapManager.start(); } } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); if (bMapManager != null) { bMapManager.stop(); } } @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; } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } }
7.修改AndroidManifest.xml文件,指定用户权限及对不同屏幕的支持
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.arlen.baidu_hello" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.arlen.baidu_hello.MainActivity" android:label="@string/app_name" > <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.ACCESS_FINE_LOCATION" > </uses-permission> <uses-permission android:name="android.permission.INTERNET" > </uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" > </uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" > </uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE" > </uses-permission> <uses-permission android:name="android.permission.CALL_PHONE" > </uses-permission> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="false" android:resizeable="true" android:smallScreens="true" /> </manifest>
8.至此,所有的工作基本完成,下面是运行效果图:
模拟器:
真机测试: