今天开始写安卓的博客啦,这次给大家带来的是安卓版本的百度地图的开发
在正式开始之前先请大家注意,在转载博客的时候注意说明出处
在做百度地图开发的时候第一步肯定是要搭建好安卓的开发环境,由于面向的并不是刚入门,或者说是还没有入门的初级开发者,所以这里的环境搭建我就不跟大家细说了
安卓环境搭建请移步-->百度文库
下面就正式开始写在安卓上面如何利用百度地图开发应用
第一步:下载百度的官方文档-->移步百度API文档下载这次教程使用的版本为《Android SDKv1.3.5(栅格地图版)全部文档下载》
第二步:到百度的官方网站申请百度不用于商业用途的KEY-->移步申请KEY
第三步:等我们的KEY和文档都下载好了以后就可以正式开始编写我们的代码了(建立如下的项目)
第四步:在上图项目中的资源定义文件中(AndroidManifest.xml)加入如下代码
<!-- 添加百度API的授权信息 --> <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:largeScreens="true" android:normalScreens="false" android:smallScreens="true" android:resizeable="true" android:anyDensity="true"/>
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.shuaiyin.baidu" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".BaiDu_SuYiActivity" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <!-- 添加百度API的授权信息 --> <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:largeScreens="true" android:normalScreens="false" android:smallScreens="true" android:resizeable="true" android:anyDensity="true"/> </manifest>
在百度官方给出的示例文档《BaiduMapApi_Sample_Android_1.3.5》中复制如下图给出的文件注意要在Jar包上点击右键Build Path --> Add to Build Path
第七步:在main.xml中定义显示百度地图控件的MAP
<!-- 添加显示百度地图的控件 --> <com.baidu.mapapi.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true"/>
<?xml version="1.0" encoding="utf-8"?> <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>
第八步:这样环境就基本搭建好了,下面就开始写代码了主要在BaiDu_SuYiActivity.java中间完成
1.让 BaiDu_SuYiActivity 继承百度地图提供的 MapActivity (com.baidu.mapapi.MapActivity)
2.添加对百度地图相关控件的定义
//添加百度地图的相关控件 private MapView mapView; //加载百度地图的引起 private BMapManager bMapManager; //定义百度地图的KEY private String key = "*我对KEY做了处理*729DD94B0429A4BEE30797E04D91B0211C4"; //在百度地图上添加相应的控件 private MapController mapController;3.在继承MapActivity时要实现他下面的一个方法
@Override
protected boolean isRouteDisplayed() {
return false;
}
4.在onCreate方法中写入如下代码
//首先实例化mapView
mapView = (MapView) this.findViewById(R.id.bmapView);
bMapManager = new BMapManager(BaiDu_SuYiActivity.this);
//调用百度地图加载KEY
bMapManager.init(key, new MKGeneralListener() {
@Override
public void onGetPermissionState(int arg0) {
if(arg0 == 300){
Toast.makeText(BaiDu_SuYiActivity.this, "您输入的KEY有问题,请核实", 2).show();
}
}
@Override
public void onGetNetworkState(int arg0) {
}
});
this.initMapActivity(bMapManager);
//表示可以设置缩放功能
mapView.setBuiltInZoomControls(true);
mapController = mapView.getController();
//在百度地图上标注一个中心点
GeoPoint geoPoint = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6));
//给地图对象设置一个中心点
mapController.setCenter(geoPoint);
//设置地图的缩放级别
mapController.setZoom(12);
onDestroy()-->onResume()-->onPause()方法
@Override protected void onDestroy() { super.onDestroy(); if(bMapManager != null){ bMapManager.destroy(); bMapManager = null; } } @Override protected void onResume() { super.onResume(); if(bMapManager != null){ bMapManager.start(); } } @Override protected void onPause() { super.onPause(); if(bMapManager != null){ bMapManager.stop(); } }
资源:BaiDu_SuYiActivity全部代码
package com.shuaiyin.baidu; import android.os.Bundle; 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; /** * 让百度地图继承MapActivity * @author shuaiyin * */ public class BaiDu_SuYiActivity extends MapActivity { //添加百度地图的相关控件 private MapView mapView; //加载百度地图的引起 private BMapManager bMapManager; //定义百度地图的KEY private String key = "*我对KEY做了处理*729DD94B0429A4BEE30797E04D91B0211C4"; //在百度地图上添加相应的控件 private MapController mapController; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //首先实例化mapView mapView = (MapView) this.findViewById(R.id.bmapView); bMapManager = new BMapManager(BaiDu_SuYiActivity.this); //调用百度地图加载KEY bMapManager.init(key, new MKGeneralListener() { @Override public void onGetPermissionState(int arg0) { if(arg0 == 300){ Toast.makeText(BaiDu_SuYiActivity.this, "您输入的KEY有问题,请核实", 2).show(); } } @Override public void onGetNetworkState(int arg0) { } }); this.initMapActivity(bMapManager); //表示可以设置缩放功能 mapView.setBuiltInZoomControls(true); mapController = mapView.getController(); //在百度地图上标注一个中心点 GeoPoint geoPoint = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6)); //给地图对象设置一个中心点 mapController.setCenter(geoPoint); //设置地图的缩放级别 mapController.setZoom(12); } @Override protected void onDestroy() { super.onDestroy(); if(bMapManager != null){ bMapManager.destroy(); bMapManager = null; } } @Override protected void onResume() { super.onResume(); if(bMapManager != null){ bMapManager.start(); } } @Override protected void onPause() { super.onPause(); if(bMapManager != null){ bMapManager.stop(); } } @Override protected boolean isRouteDisplayed() { return false; } }
模拟器中运行的结果
有什么不懂的可以直接给我留言或者私信我。