Android百度地图API开发
android百度地图api实现短信接收定位

工程文件结构:demoApplication.java package com.gy.mymaps;import android.app.Application;import android.content.Context;import android.widget.Toast;import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.MKGeneralListener;import com.baidu.mapapi.map.MKEvent;public class DemoApplication extends Application {private static DemoApplication mInstance = null;public boolean m_bKeyRight = true;BMapManager mBMapManager = null;@Overridepublic void onCreate() {super.onCreate();mInstance = this;initEngineManager(this);}public void initEngineManager(Context context) {if (mBMapManager == null) {mBMapManager = new BMapManager(context);}if (!mBMapManager.init(new MyGeneralListener())) {Toast.makeText(DemoApplication.getInstance().getApplicationContext(),"BMapManager初始化错误!", Toast.LENGTH_LONG).show();}}public static DemoApplication getInstance() {return mInstance;}// 常用事件监听,用来处理通常的网络错误,授权验证错误等static class MyGeneralListener implements MKGeneralListener {public void onGetNetworkState(int iError) {if (iError == MKEvent.ERROR_NETWORK_CONNECT) {Toast.makeText(DemoApplication.getInstance().getApplicationContext(), "您的网络出错啦!",Toast.LENGTH_LONG).show();}else if (iError == MKEvent.ERROR_NETWORK_DA TA) {Toast.makeText(DemoApplication.getInstance().getApplicationContext(), "输入正确的检索条件!",Toast.LENGTH_LONG).show();}// ...}public void onGetPermissionState(int iError) {//非零值表示key验证未通过if (iError != 0) {//鎺堟潈Key閿欒锛�Toast.makeText(DemoApplication.getInstance().getApplicationContext(),"请输入正确的授权Key,并检查您的网络连接是否正常!error: "+iError, Toast.LENGTH_LONG).show();DemoApplication.getInstance().m_bKeyRight = false;}else{DemoApplication.getInstance().m_bKeyRight = true;Toast.makeText(DemoApplication.getInstance().getApplicationContext(),"key认证成功", Toast.LENGTH_LONG).show();}}}}Mainactivity.java:package com.gy.mymaps;import java.util.List;import android.annotation.SuppressLint;import android.app.Activity;import android.content.ContentValues;import android.database.ContentObserver;import android.database.Cursor;import android.graphics.drawable.Drawable;import .Uri;import android.os.Build;import android.os.Bundle;import android.os.Handler;import android.telephony.SmsManager;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.map.ItemizedOverlay;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.OverlayItem;import com.baidu.mapapi.search.MKAddrInfo;import com.baidu.mapapi.search.MKBusLineResult;import com.baidu.mapapi.search.MKDrivingRouteResult;import com.baidu.mapapi.search.MKPoiResult;import com.baidu.mapapi.search.MKSearch;import com.baidu.mapapi.search.MKSearchListener;import com.baidu.mapapi.search.MKShareUrlResult;import com.baidu.mapapi.search.MKSuggestionResult;import com.baidu.mapapi.search.MKTransitRouteResult;import com.baidu.mapapi.search.MKWalkingRouteResult;import api.basestruct.GeoPoint;//import com.gy.msmsend.R;public class MainActivity extends Activity {//UI相关Button mBtnReverseGeoCode = null; // 将坐标反编码为地址Button mBtnGeoCode = null; // 将地址编码为坐标Button msmSend =null; //短信发送按钮//地图相关MapView mMapView = null; // 地图View//搜索相关MKSearch mSearch = null;// 搜索模块,也可去掉地图模块独立使用EditText phoneText;String[] as;String city=null;String pos=null;Drawable marker;int png=0;//protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);/** 注册短信变化事件监听*/SmsContent content = new SmsContent(new Handler());//注册短信变化监听this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, content);//注册短信变化监听/*** 使用地图sdk前需先初始化BMapManager.* BMapManager是全局的,可为多个MapView共用,它需要地图模块创建前创建,* 并在地图地图模块销毁后销毁,只要还有地图模块在使用,BMapManager就不应该销毁*/DemoApplication app = (DemoApplication)this.getApplication();if (app.mBMapManager == null) {app.mBMapManager = new BMapManager(getApplicationContext());/*** 如果BMapManager没有初始化则初始化BMapManager*/app.mBMapManager.init(new DemoApplication.MyGeneralListener());}setContentView(yout.activity_main);CharSequence titleLable="我的位置";setTitle(titleLable);//地图初始化mMapView = (MapView)findViewById(R.id.bmapView);mMapView.getController().enableClick(true);mMapView.getController().setZoom(12);// 初始化搜索模块,注册事件监听mSearch = new MKSearch();mSearch.init(app.mBMapManager, new MKSearchListener() {public void onGetPoiDetailSearchResult(int type, int error) {}public void onGetAddrResult(MKAddrInfo res, int error) {if (error != 0) {String str = String.format("错误号:%d", error);Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show();return;}//地图移动到该点mMapView.getController().animateTo(res.geoPt);if (res.type == MKAddrInfo.MK_GEOCODE){//地理编码:通过地址检索坐标点String strInfo = String.format("纬度:%f 经度:%f", res.geoPt.getLatitudeE6()/1e6, res.geoPt.getLongitudeE6()/1e6);Toast.makeText(MainActivity.this, strInfo, Toast.LENGTH_LONG).show();}if (res.type == MKAddrInfo.MK_REVERSEGEOCODE){//反地理编码:通过坐标点检索详细地址及周边poiString strInfo = res.strAddr;Toast.makeText(MainActivity.this, strInfo, Toast.LENGTH_LONG).show();EditText editGeoCodeKey = (EditText)findViewById(R.id.geocodekey);//设置城市editGeoCodeKey.setText(strInfo);}//生成ItemizedOverlay图层用来标注结果点ItemizedOverlay<OverlayItem> itemOverlay = new ItemizedOverlay<OverlayItem>(null, mMapView);//生成ItemOverlayItem item = new OverlayItem(res.geoPt, "", null);//为maker定义位置和边界marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight());//给item设置markeritem.setMarker(marker);//在图层上添加itemitemOverlay.addItem(item);//清除地图其他图层mMapView.getOverlays().clear();//添加一个标注ItemizedOverlay图层mMapView.getOverlays().add(itemOverlay);//执行刷新使生效mMapView.refresh();}public void onGetPoiResult(MKPoiResult res, int type, int error) {}public void onGetDrivingRouteResult(MKDrivingRouteResult res, int error) {}public void onGetTransitRouteResult(MKTransitRouteResult res, int error) {}public void onGetWalkingRouteResult(MKWalkingRouteResult res, int error) {}public void onGetBusDetailResult(MKBusLineResult result, int iError) {}public void onGetSuggestionResult(MKSuggestionResult res, int arg1) {}public void onGetShareUrlResult(MKShareUrlResult result, int type,int error) {// TODO Auto-generated method stub}});// 设定地理编码及反地理编码按钮的响应mBtnReverseGeoCode = (Button)findViewById(R.id.reversegeocode);mBtnGeoCode = (Button)findViewById(R.id.geocode);msmSend = (Button)findViewById(R.id.sendButton);OnClickListener clickListener = new OnClickListener(){public void onClick(View v) {SearchButtonProcess(v);}};mBtnReverseGeoCode.setOnClickListener(clickListener);mBtnGeoCode.setOnClickListener(clickListener);msmSend.setOnClickListener(clickListener);}/*** 发起搜索* @param v*/void SearchButtonProcess(View v) {if (mBtnReverseGeoCode.equals(v)) {EditText lat = (EditText)findViewById(t);EditText lon = (EditText)findViewById(R.id.lon);//得到需要标在地图上的资源marker = getResources().getDrawable(R.drawable.ic_mark0);GeoPoint ptCenter = new GeoPoint((int)(Float.valueOf(lat.getText().toString())*1e6),(int)(Float.valueOf(lon.getText().toString())*1e6));//反Geo搜索mSearch.reverseGeocode(ptCenter);} else if (mBtnGeoCode.equals(v)) {EditText editCity = (EditText)findViewById(R.id.city);EditText editGeoCodeKey = (EditText)findViewById(R.id.geocodekey);//得到需要标在地图上的资源marker = getResources().getDrawable(R.drawable.ic_mark0);//Geo搜索mSearch.geocode(editGeoCodeKey.getText().toString(),editCity.getText().toString());}else if (msmSend.equals(v)){phoneText = (EditText)findViewById(R.id.tel);//发送短信sendMessage();}}@Overrideprotected void onPause() {mMapView.onPause();super.onPause();}@Overrideprotected void onResume() {mMapView.onResume();super.onResume();}@Overrideprotected void onDestroy() {mMapView.destroy();mSearch.destory();super.onDestroy();}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);mMapView.onSaveInstanceState(outState);}@Overrideprotected void onRestoreInstanceState(Bundle savedInstanceState) {super.onRestoreInstanceState(savedInstanceState);mMapView.onRestoreInstanceState(savedInstanceState);}/****/private void sendMessage() {// 获取文本框中的内容String phone_num = phoneText.getText().toString();String content ="QUERY";SmsManager smsMagager = SmsManager.getDefault();if (content.length() > 70) {List<String> sms = smsMagager.divideMessage(content);for (String con : sms) {smsMagager.sendTextMessage(phone_num, null, con, null, null);}} else {smsMagager.sendTextMessage(phone_num, null, content, null, null);}Toast.makeText(MainActivity.this,, Toast.LENGTH_LONG).show();}/** 监听短信数据库*/class SmsContent extends ContentObserver {private Cursor cursor = null;@SuppressLint("ShowToast")public SmsContent(Handler handler) {super(handler);// TODO Auto-generated constructor stu}@SuppressWarnings("deprecation")@Overridepublic void onChange(boolean selfChange) {// TODO Auto-generated method stubsuper.onChange(selfChange);EditText phonenum=(EditText)findViewById(R.id.tel);String telnum="+86"+phonenum.getText().toString();// 读取收件箱中指定号码的短信cursor = managedQuery(Uri.parse("content://sms/inbox"),new String[] { "_id", "address", "read", "body" }," address=? and read=?",new String[] {telnum,"0" }, "_id desc");// 按id排序,如果按date排序的话,修改手机时间后,读取的短信就不准了if (cursor != null && cursor.getCount() > 0) {ContentValues values = new ContentValues();values.put("read", "1"); // 修改短信为已读模式cursor.moveToNext();int smsbodyColumn = cursor.getColumnIndex("body");String smsBody = cursor.getString(smsbodyColumn);getmypos(smsBody);//开启搜索//经纬度EditText lat = (EditText)findViewById(t);EditText lon = (EditText)findViewById(R.id.lon);//设置输入框的内容lat.setText(as[2]);lon.setText(as[1]);//得到需要标在地图上的资源getpng(png);GeoPoint ptCenter = new GeoPoint((int)(Float.valueOf(lat.getText().toString())*1e6), (int)(Float.valueOf(lon.getText().toString())*1e6));//反Geo搜索mSearch.reverseGeocode(ptCenter);}// 在用managedQuery的时候,不能主动调用close()方法,否则在<a href="/pro/ydad/" target="_blank" class="keylink">Android</a> 4.0+的系统上,会发生崩溃if (Build.VERSION.SDK_INT < 14) {cursor.close();}}}//字符串处理private void getmypos(String str){System.out.println(str = str.replaceAll("\\D", "_").replace("_+", "_"));as = str.split("_+");float a=(float) (Float.valueOf(as[1])/1e6);float b=(float) (Float.valueOf(as[2])/1e6);png=Integer.parseInt(as[5]);as[1]=a+"";as[2]=b+"";}//根据数据中的朝向改变图标private void getpng(int num){switch(num){case 0:marker = getResources().getDrawable(R.drawable.ic_mark0);break;case 1:marker = getResources().getDrawable(R.drawable.ic_mark01);break;case 2:marker = getResources().getDrawable(R.drawable.ic_mark02);break;case 3:marker = getResources().getDrawable(R.drawable.ic_mark03);break;case 4:marker = getResources().getDrawable(R.drawable.ic_mark04);break;case 5:marker = getResources().getDrawable(R.drawable.ic_mark05);break;case 6:marker = getResources().getDrawable(R.drawable.ic_mark06);break;case 7:marker = getResources().getDrawable(R.drawable.ic_mark07);break;case 8:marker = getResources().getDrawable(R.drawable.ic_mark08);break;case 9:marker = getResources().getDrawable(R.drawable.ic_mark09);break;case 10:marker = getResources().getDrawable(R.drawable.ic_mark10);break;case 11:marker = getResources().getDrawable(R.drawable.ic_mark11);break;default:marker = getResources().getDrawable(R.drawable.ic_mark0);break;}}}Activity_main.xml:<RelativeLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent" android:layout_height="match_parent"tools:context=".MainActivity"><com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapView"android:layout_width="fill_parent"android:layout_height="fill_parent" android:clickable="true"/><EditTextandroid:id="@+id/lat"android:layout_width="125dp"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:ems="10"android:text="39.904965"/><Buttonandroid:id="@+id/reversegeocode"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/lat"android:layout_alignBottom="@+id/lat"android:layout_alignParentRight="true"android:text="查找"/><Buttonandroid:id="@+id/geocode"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_alignTop="@+id/geocodekey"android:text="查找"/><Buttonandroid:id="@+id/sendButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBottom="@+id/tel"android:layout_alignParentRight="true"android:text="发送"/><EditTextandroid:id="@+id/lon"android:layout_width="125dp"android:layout_height="wrap_content"android:layout_alignTop="@+id/reversegeocode"android:layout_toRightOf="@+id/lat"android:ems="10"android:text="116.327764"/><EditTextandroid:id="@+id/geocodekey"android:layout_width="250dp"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@+id/reversegeocode"android:ems="20"android:text="北京市海淀区上地十街10号"><requestFocus/></EditText><EditTextandroid:id="@+id/city"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_below="@+id/reversegeocode"android:layout_toLeftOf="@+id/geocode"android:ems="10"android:text=""/><EditTextandroid:id="@+id/tel"android:layout_width="250dp"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@+id/geocodekey"android:ems="15"android:text="1503769891"/>"</RelativeLayout>Manifest.xml:<?xml version="1.0"encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="com.gy.mymaps"android:versionCode="1"android:versionName="1.0"><uses-sdkandroid:minSdkVersion="10"android:targetSdkVersion="10"/><applicationandroid:name="com.gy.mymaps.DemoApplication"android:debuggable="true"android:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme"><meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="O5h23uRrcyxbaiZs3w7skruP"/><activityandroid:name="com.gy.mymaps.MainActivity"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="UNCHER"/> </intent-filter></activity></application><uses-permission android:name="android.permission.GET_ACCOUNTS"/><uses-permission android:name="E_CREDENTIALS"/> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/> <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.INTERNET"/><uses-permissionandroid:name="uncher.permission.READ_SETTINGS"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.BROADCAST_STICKY"/><uses-permission android:name="android.permission.WRITE_SETTINGS"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.SEND_SMS"/><uses-permission android:name="android.permission.RECEIVE_SMS"/><!-- 读取消息 --><uses-permission android:name="android.permission.READ_SMS"/><!-- 写入消息 --><uses-permission android:name="android.permission.WRITE_SMS"/><!-- 对屏幕的支持 --><supports-screensandroid:anyDensity="true"android:largeScreens="true"android:normalScreens="false"android:resizeable="true"android:smallScreens="true"/></manifest>String.xml:<?xml version="1.0"encoding="utf-8"?><resources><string name="app_name">mymaps</string><string name="action_settings">Settings</string><string name="info">短信发送成功</string></resources>该app是通过发送QUEST到一个返回位置信息的设备,返回的短信接收的短信格式(可以通过修改字符串处理方法来修改处理方法):#Lon=116486291,Lat=39899332,Speed=0,Alt=65,Direction=0#。
基于Android平台下基于百度地图API的地图导航设计毕业论文

本科毕业论文(设计)题目Android平台下基于百度地图API的地图导航设计专业电子信息科学与技术作者姓名刘茂强学号**********单位物理科学与信息工程学院指导教师郎丰法2014 年 05月教务处编原创性声明本人郑重声明:所提交的学位论文是本人在导师指导下,独立进行研究取得的成果。
除文中已经引用的内容外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得聊城大学或其他教育机构的学位证书而使用过的材料。
对本文的研究作出重要贡献的个人和集体,均在文中以明确的方式表明。
本人承担本声明的相应责任。
学位论文作者签名:日期:指导教师签名:日期:目录前言 (9)1.绪论 (10)1.1 背景及意义 (10)1.2 研究现状 (10)1.3 研究课题主要内容 (11)1.3.1 地点搜索和位置定位 (11)1.3.2 附近搜索 (11)1.3.3 路线规划 (11)1.3.4 公交线路查询 (11)1.3.5 GPS导航 (11)1.4 论文结构 (11)2.Android平台与开发环境 (13)2.1 Android系统 (13)2.1.1 后缀简介 (13)2.1.2 应用组件 (13)2.1.3 系统运行库 (14)2.2 Eclipse (14)2.2.1 基本介绍 (14)2.2.2 主要组成 (15)2.2.3 软件开发包 (15)2.3 Android开发环境搭建 (15)3.相关配置和框架结构 (16)3.1 工程配置 (16)3.1.1 Android SDK的配置 (16)3.1.2 定位SDK的配置 (16)3.1.3 导航SDK的配置 (16)3.2 密钥申请 (17)3.2.1 密钥简介 (17)3.2.2 申请步骤 (17)3.3 配置AndroidManisfet.xml (19)3.3.1权限配置 (19)3.3.2 添加对应的开发密钥 (19)3.3.3 声明service组件 (19)3.4 程序结构 (19)4.主页面设计 (21)4.1 基本配置 (21)4.1.1 配置main.xml (21)4.1.2 配置AndroidManifest.xml (21)4.2 MainActivity代码设计 (21)4.2.1创建地图MainActivity,并import相关类 (22)4.2.2 MainActivity变量定义 (22)4.2.3 MainActivity主要变量初始化 (22)4.2.4 各控件设置 (22)4.2.5 选择菜单 (23)4.2.6 搜索事件处理 (24)4.2.7 定位事件处理 (25)5.附近搜索设计 (26)5.1 基本配置 (26)5.1.1 配置near.xml (26)5.1.2 AndroidManifest.xml (26)5.2 NearActivity代码设计 (26)5.2.1 创建地图NearActivity,并import相关类 (26)5.2.2 NearActivity变量定义 (26)5.2.3 NearActivity主要变量初始化 (27)5.2.4 各控件设置 (27)5.2.5 事件处理 (27)6.路线规划设计 (29)6.1 基本配置 (29)6.1.1 配置way.xml (29)6.1.2 AndroidManifest.xml (29)6.2 WayActivity代码设计 (29)6.2.1 创建地图WayActivity,并import相关类 (29)6.2.2 WayActivity变量定义 (29)6.2.3 WayActivity主要变量初始化 (30)6.2.4 各控件设置 (30)6.2.5 搜索结果处理 (31)6.2.6 节点浏览 (31)7.公交查询设计 (34)7.1 基本配置 (34)7.1.1 配置bus.xml (34)7.1.2 AndroidManifest.xml (34)7.2 BusActivity代码设计 (34)7.2.1 创建地图BusActivity,并import相关类 (34)7.2.2 BusActivity变量定义 (35)7.2.3 WayActivity主要变量初始化 (35)7.2.4 各控件设置 (35)7.2.5 事件处理 (35)8.驾车导航设计 (38)8.1 基本配置 (38)8.1.1 配置navigation.xml (38)8.1.2 AndroidManifest.xml (38)8.2 NavigationActivity代码设计 (38)8.2.1 创建地图NavigationActivity,并import相关类 (38)8.2.2 NavigationActivity变量定义 (39)8.2.3 NavigationActivity主要变量初始化 (39)8.2.4 设置单击事件 (39)总结 (42)致谢 (43)参考文献 (44)附录 (45)摘要在近年来移动设备智能化、轻便化的趋势下,地图导航已经成为人们出行必不可少的工具,给人们的生活带来了极大的便利。
简单使用百度API生成地图步骤

//向地图中添加缩略图控件
var ctrl_ove = new BMap.OverviewMapControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,isOpen:1});
map.addControl(ctrl_ove);
window.map = map;//将map变量存储在全局
}
//地图事件设置函数:
function setMapEvent(){
map.enableDragging();//启用地图拖拽事件,默认启用(可不写)
map.enableScrollWheelZoom();//启用地图滚轮放大缩小
map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)
map.enableKeyboard();//启用键盘上下左右键移动地图
}
//地图控件添加函数:
function addMapControl(){
//向地图中添加缩放控件
var ctrl_nav = new BMap.NavigationControl({anchor:BMAP_ANCHOR_TOP_LEFT,type:BMAP_NAVIGATION_CONTROL_PAN});
}
//创建地图函数:
function createMap(){
var map = new BMap.Map("doint = new BMap.Point(120.365872,31.545238);//定义一个中心点坐标
map.centerAndZoom(point,17);//设定地图的中心点和坐标并将地图显示在地图容器中
百度地图API应用实例说明文档

百度地图API百度地图API应用实例Michael Tian目录百度地图API (3)1基础知识 (3)1.1 百度地图 API 概念 (3)1.2 百度地图的“Hello, World” (3)1.2.1 引用百度地图API文件 (5)1.2.2创建地图容器元素 (5)1.2.3命名空间 (5)1.2.4创建地图实例 (5)1.2.5创建点坐标 (6)1.2.6 初始化地图 (6)1.2.7地图操作 (6)2应用示例 (6)2.1 Map类 (7)2.2 ExtJs (7)2.2.1 将百度地图嵌入到Ext中 (8)2.2.2 在Ext中显示百度地图 (10)2.3 向地图添加标注 (10)2.4 为标注添加信息窗口 (11)2.5 标注与数据列表的联动 (12)2.6 数据列表与标注的联动 (12)2.7 创建可拖拽的标注 (14)3折线 (14)3.1添加多边形 (14)3.2样式设置 (16)4自定义标注 (16)5 文本标注 (17)5.1 添加一个文本标注 (17)5.2 文本位置偏移值 (18)5.3 自定义Label (19)5.4 添加滑动门效果 (20)6参考资料 (21)百度地图API1基础知识1.1 百度地图 API 概念百度地图API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富、交互性强的地图应用程序。
百度地图API不仅包含构建地图的基本功能接口,还提供了诸如本地搜索、路线规划等数据服务。
1.2 百度地图的“Hello, World”开始学习百度地图API最简单的方式是看一个简单的示例。
以下代码创建了一个520x340<meta http-equiv="Content-Type"content="text/html; charset=gbk"/> <title>Hello, World</title><scriptsrc=/api?key=46ce9d0614bf7aefe0ba562f8cf87194 &v=1.0&services=false type="text/javascript"></script></head><body><div style="width: 520px; height: 340px; border: 1px solid gray"id="container"></div></body></html><script type="text/javascript">var map = new BMap.Map("container"); // 创建Map实例var point = new BMap.Point(116.404, 39.915); // 创建点坐标map.centerAndZoom(point,15); // 初始化地图,设置中心点坐标和地图级别。
百度地图定位开发——Android地图sdk开发

百度地图定位开发——Android地图sdk开发百度地图Android定位SDK是为Android移动端应⽤提供的⼀套简单易⽤的定位服务接⼝,专注于为⼴⼤开发者提供最好的综合定位服务。
通过使⽤百度定位SDK,开发者可以轻松为应⽤程序实现智能、精准、⾼效的定位功能。
打开百度地图sdk开发,输⼊应⽤名称这⾥需要输⼊SHA1,具体寻找SHA1过程可以参考官⽅的⽂档创建成功后,下载官⽅的jar包,将解压后的所有⽂件添加到申请AK时使⽤的项⽬⽂件中的lib⽬录中。
然后在app⽬录下的build.gradle⽂件中android块中配置sourceSets标签,内容如下:sourceSets {main {jniLibs.srcDir 'libs'}}此时就能将部分⽬录添加到项⽬视图中,现在需要将jar⽂件添加到项⽬视图中。
在app⽬录的build.gradle的dependencies块中添加以下代码,然后右键⽬标jar⽂件,选择Add as library,就能将其加⼊到项⽬视图中。
implementation files('libs\\BaiduLBS_Android.jar')然后打开AndroidManifest.xml⽂件,在<application>中加⼊如下代码配置开发密钥AK,并且根据官⽅⽂档,添加权限显⽰地图我们在xml⽂件的代码中直接输⼊<com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapView"android:layout_width="411dp"android:layout_height="662dp"android:clickable="true"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"tools:ignore="MissingClass" />然后我们需要初始化地图,创建⼀个activitypackage com.example.zty_map;import androidx.appcompat.app.AppCompatActivity;import android.app.Application;import android.os.Bundle;import com.baidu.mapapi.CoordType;import com.baidu.mapapi.SDKInitializer;public class MAPZTY1 extends Application {@Overridepublic void onCreate() {super.onCreate();//在使⽤SDK各组件之前初始化context信息,传⼊ApplicationContextSDKInitializer.initialize(this);//⾃4.3.0起,百度地图SDK所有接⼝均⽀持百度坐标和国测局坐标,⽤此⽅法设置您使⽤的坐标类型. //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
百度地图导航Demo详细文档

百度地图导航Demo1). 开发环境配置:在新建的Android工程下的libs文件夹内添加百度导航SDK 的jar包:galaxy_mini.jar,android_api_1.1_forsdk.jar,BaiduLBS_Android.jar;在libs文件夹下新建armeabi文件夹,并导入下载相关的.so包:libapp_BaiduNaviApplib_v1_0_0.so,libCNPackage.so,libejTTS.so,liblocnaviSDK.so。
(这是下载带有TTS的)BaiduMapNaviSDK.rar资源包:2). 在Android工程的Manifest.xml文件中的配置:a. 在<application>标签下添加2个标签:<service>、<meta-data>:<meta-data android:name = "com.baidu.lbsapi.API_KEY"android:value = "您为这个Android工程申请的百度地图key"/> <service android:name = "com.baidu.navi.location.f"android:enable = "true" />b. 添加使用百度导航sdk的权限:<uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><uses-permissionandroid:name="android.permission.BAIDU_LOCATION_SERVICE"/><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.ACCES_MOCK_LOCATION"/> <uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permissionandroid:name="uncher.permission.READ_SETTINGS"/><uses-permission android:name="android.permission.WAKE_LOCK"/><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.GET_TASKS"/><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.BROADCAST_STICKY"/><uses-permission android:name="android.permission.WRITE_SETTINGS"/><uses-permissionandroid:name="android.permission.PROCESS_OUTGOING_CALLS"/><uses-permission android:name="android.permission.READ_PHONE_STATE"/><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /><uses-permission android:name="android.permission.RECORD_AUDIO"/>3). 代码实现部分:a. 在app入口Activity(第一个Activity)中初始化导航引擎:public calss MainActivity extends ACtivity{private boolean mIsEngineInitSuccess = false;private NaviEngineInitListener mListener = newNaviEngineInitListener(){ @Overridepublic void engineInitFail(){}@Overridepublic void engineInitStart(){}@Overridepublic void engineInitSuccess(){mIsEngineInitSuccess = true;} };private String getSdcardDir(){if(Environment.getExternalStorageState().equalsIgnoreCase(Environment.MEDIA_MOUNTED)){return Environment.getExternalStorageDirectory().toString();}return null;}@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(yout.activity_main);//初始化导航引擎2种方法//第一种:末尾参数为nullBaiduNaviManager.getInstance().initEngine(this,getSdcardDir(), mListener, null);//第二种:末尾参数不为nullBaiduNaviManager.getInstance().initEngine(this,getSdcardDir(), mListener, new LBSAuthManager(){ @Overridepublic void onAuthResult(int status, String msg){String str = null;if(status == 0) str ="key校验成功";else str = "key校验成功" + msg;Log.v("KEY_STATUS", str);}});//前往导航页的buttonButton naviPageBtn = (Button)findViewById(R.id.navi_page);naviPageBtn.setOnClickListener(new OnClickListener(){ @Overridepublic void onClick(View v){Intent intent = new Intent(MainActivity.this,RouteGuideDemoActivity.class);startActivity(intent);}});}}b. activty_main.xml文件的内容:<LinearLayout xmlns:android ="/apk/res/android"android:layout_width = "fill_parent"android:layout_height = "fill_parent"android:orientation = "vertical"><Button android:id = "@+id/navi_page"android:layout_width = "fill_parent"android:layout_height = "fill_parent"android:text = "前往导航页" /></LinearLayout>c. 配置导航结果显示页:具体方法步骤:右键你的工程包->New->Class->填写class名字(下面的有一个Superclass属性填写为android.app.Activity).如下图:PS:此页不需要配置.xml文件在Manifest.xml文件的<application>标签下加入导航显示的声明<activity android:name =".BNavigatorActivity"android:configChanges ="orientation|screenSize|keyboard|keyboardHidden"/>BNavigatorActivity.class文件:public class BNavigatorActivity extends Activity{private IBnavigatorListener mListener = new IBnavigatorListener(){ @Overridepublic void ontifyGPSStatusData(int arg0){}@Overridepublic void ontifyLocateData(LocData arg0){}@Overridepublic void ontifyNmeaData(String arg0){}@Overridepublic void ontifySensorData(SensorData arg0){}@Overridepublic void ontifyStartNav(){BaiduNaviManager.getInstance().dismissWaitProgressDialog();}@Overridepublic void ontifyViewModeChanged(int arg0){}@Overridepublic void onPageJump(int times, Object arg0){//页面跳转回调if(IBNavigatorListener.PAGE_JUMP_WHEN_GUIDE_END == times)finish();else if(IBNavigatorListener.PAGE_JUMP_WHEN_ROUTE_PLAN_FAIL ==times) finish();}@Overridepublic void onYawingRequestStart(){}@Overridepublic void onYawingRequestSuccess(){}};@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);//创建NMapViewMapGLSurfaceView nMapView = BaiduNaviManager.getInstance().createNMapView(getApplicationContext());//创建导航视图View navigatorView = BNavigator.getInstance().init(this,getIntent().getExtras(), nMapView);//填充视图setContentView(navigatorView);BNavigator.getInstance().setListener(mListener);BNavigator.getInstance().startNav();//初始化TTS,可以使用非百度导航sdk提供的ttsBNTTSPlayer.initPlayer();//设置TTS播放回调BNavigatorTTSPlayer.setTTSPlayerListener(newIBNTTSPlayerLister(){ @Overridepublic int playTTSText(String str, int arg){return BNTTSPlayer.playTTSText(str, arg);}@Overridepublic void phoneHangUp(){}@Overridepublic void phoneCalling(){}@Overridepublic int getTTSState() {return BNTTSPlayer. getTTSState(); } });BNRoutePlanner.getInstance().setObserver(new RoutePlanObserver(this, new iJumpToDownloadListener(){@Overridepublic void onJumpToDownloadOfflineData(){}}));}//重写管理api:onPause(), onResume, onDestroy(), onBackPressed()@Overridepublic void onResume(){BNavigator.getInstance().resume();super.onResume();BNMapController.getInstance().onResume();}@Overridepublic void onResume(){BNavigator.getInstance().pause();super.onPause();BNMapController.getInstance().onPause();}@Overridepublic void onDestroy(){BNavigator.destroy();BNRoutePlanner.getInstance().setObserver(null);super. onDestroy ();}@Overridepublic void onBackPressed(){BNavigator.getInstance().onBackPressed ();}}d. 发起导航页的Activity(RouteGuideDemoActivity).xml文件:<LinearLayout xmlns:android ="/apk/res/android"android:layout_width = "fill_parent"android:layout_height = "fill_parent"android:orientation = "vertical"><Button android:id = "@+id/start_btn"android:layout_width = "wrap_content"android:layout_height = "wrap_content"android:text = "一键导航" /></LinearLayout>.classpublic class RouteGuideDemoActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(yout.activity_route_guide_demo);Button startBtn = (Button)findViewById(R.id.start_btn);startBtn.setOnClickListener(new SelfBtnClickListener());}private class SelfBtnClickListener implements OnClickListener(){ @Overridepublic void onClick(View v){switch(v.getId()){case R.id.start_btn:selfLaunchNavigator();break;default:break;}}}private void selfLaunchNavigator(){BaiduNaviManager.getInstance().launchNavigator(this,40.06803, 116.30142, "百度大厦", //起始点39.90882, 116.39750, "天安门", //终点RoutePlan_Mode.ROUTE_PLAN_MODE_MIN_TIME, //算路方式true, //真实导航(true or false)BaiduNaviManager.STRATEGY_FORCE_ONLINE_FRIORIT, //在离线策略new OnStartNavigationListener(){ //跳转监听@Overridepublic void onJumpToNavigator(Bundle bundle){Intent intent = new Intent(RouteGuideDemoActivity.this,BNavigatorActivity.class);intent.putExtras(bundle);startActivity(intent);}@Overridepublic void onJumpToDownloader(){}});}}。
百度应用开发教程

百度应用开发教程百度应用开发教程百度是中国最大的互联网公司之一,旗下有众多热门应用,如百度搜索、百度地图、百度音乐等。
如果你想为百度开发应用,本文将为你提供一个简单的百度应用开发教程。
让我们开始吧!步骤一:了解百度开放平台首先,你需要了解百度的开放平台。
百度开放平台提供了丰富的开发者资源和工具,帮助开发者构建各种应用。
你可以访问百度开放平台的官方网站,注册一个开发者账号,并了解关于开发者文档、API接口、SDK等相关信息。
步骤二:选择开发语言和环境百度开发平台支持多种开发语言和环境。
你可以根据自己的熟悉程度和应用需求选择合适的开发语言和环境。
常见的选择包括Java、Python、PHP等语言,以及Eclipse、Android Studio等开发工具。
在你选择开发环境之前,记得先安装好相应的软件和工具。
步骤三:注册应用和获取API密钥在开始开发之前,你需要在百度开放平台上注册一个应用,并获取API密钥。
这个密钥是用于应用认证和鉴权的重要凭证。
在注册应用的过程中,你需要填写应用名称、描述、类型等基本信息,并选择你要使用的API接口。
步骤四:学习API文档和示例代码百度开放平台的文档提供了详细的API接口说明、调用方法和示例代码。
在开始开发之前,你应该仔细阅读相关的API文档,了解接口的参数、返回值等信息。
同时,百度开放平台也提供了一些示例代码,你可以参考这些代码来快速入门。
步骤五:开发你的应用现在,你可以开始开发你的应用了!根据你的需求,选择合适的API接口和方法,并根据API文档中的描述进行开发。
你可以使用百度提供的SDK来简化开发过程,SDK中已经封装好了一些常用的功能和方法。
在开发过程中,记得合理使用API密钥进行认证和鉴权。
步骤六:调试和测试在开发完成后,你需要对应用进行调试和测试,确保应用的功能和性能满足用户的需求。
你可以使用开发工具提供的调试功能,检查代码的运行情况,并对应用进行功能和兼容性测试。
百度地图API基本使用(二)

百度地图API基本使⽤(⼆)本⽂系作者原创,转载请私信并在⽂章开头附带作者和原⽂地址链接。
违者,作者保留追究权利。
前⾔PS:我所使⽤的的是百度地图Javascript API 3.0本⽂是对之前使⽤的延续,继续对百度地图API的⼀些使⽤去做归纳和总结,本次主要是对地图上的覆盖物这块做介绍,如果有⼩伙伴没有看过之前的,可以先去观看⼀下,前期所需要的⼀些准备,以及⼀些基本的⽤法。
感兴趣的⼩伙伴可以⾃⾏查看百度地图官⽅提供的⽂档开发⽂档中的JavaScript API也可以通过下⽅⽰例中⼼更直观的看到百度地图API的⼀些使⽤,以及它的⼀些特性不过要注意:实例中⼼使⽤的是BMapGL去创建容器的,最新版GL地图命名空间为BMapGL, 可按住⿏标右键控制地图旋转、修改倾斜⾓度。
由于本次使⽤的是BMapGL所以在引⼊API的时候也不太⼀样引⼊⽅式如下:<script type="text/javascript" src="///api?type=webgl&v=1.0&ak=您的密钥"></script>好的,废话不多说,开整百度地图API-覆盖物在讲覆盖物之前,先给⼤家讲⼀下覆盖物的添加和删除的⽅法,这个是通⽤的,下⾯各种类型的覆盖的添加和删除的使⽤是⼀样的。
在我们获取到容器之后,根据⾃⼰的需求创建好⾃⼰的覆盖物对象之后,如果我们需要添加覆盖物的话,就可以使⽤容器对象.addOverlay(覆盖物对象);如果我们需要清除覆盖物的话,只需要使⽤容器对象.clearOverlays();就可以清除所有,但是如果只是想清除某⼀个覆盖物的话,我们需要使⽤容器对象.removeOverlays(覆盖物对象);代码⽰例如下://创建容器var map = new BMapGL.Map('allmap');var point = new BMapGL.Point(116.404, 39.915);map.centerAndZoom(point, 15);// 创建点覆盖物var marker = new BMapGL.Marker(new BMapGL.Point(116.404, 39.915));//添加覆盖物map.addOverlay(marker);//删除具体覆盖物map.removeOverlays(marker);//删除所有覆盖物map.clearOverlays();1. 点覆盖物点覆盖物主要使⽤的是Marker这个⽅法,例如:var marker1 = new BMapGL.Marker(new BMapGL.Point(经度, 纬度));这样就创建好了⼀个点覆盖物对象,我们需要使⽤上⾯介绍的添加覆盖物的⽅法,将覆盖物添加到容器中,即容器对象.addOverlay(marker1)这样就实现了简单的点覆盖物,不过有的时候需要我们的覆盖物能够拖动,所以这个时候就要⽤到⼀个属性enableDragging,默认情况下是false,也就是说在上⾯的那些默认创建的⽅式这个属性都是false,这是属性字⾯意思也很好理解⽀持拖拽,所以如果有需要拖拽的需求,我们只需要将整个属性设置为true。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地图入手,其实他们的用法都差不多,本篇文章就带领大家在自己的Android项目中加入百度地图的功能,接下来我会写一系列关于百度地图的文章,欢迎大家到时候关注!一申请API key∙在使用百度地图之前,我们必须去申请一个百度地图的API key,申请地址/apiconsole/key,自己自行注册一个百度账号,很快就能申请到的,如下图∙点击"创建密钥",系统将为我们自动生成密钥,当然我们在使用密钥之前还必须配置,点击"设置"如下图Key type 选择“for mobile”,安全码是Android签名证书的证书指纹(SHA1)值+ “;” + 你的应用程序包名,所以当你配置好了API key 你不能随意更换应用程序的包名,如果更换了包名我们需要重新配置API key,接下来我们来介绍怎么获取数字签名我们知道我们开发的Android程序是需要给他签名的,如果没有签名是不允许被安装到手机或者模拟器的,那么你会有疑问,我平常开发的应用确实没签名,怎么能在模拟器或者手机上直接运行呢,其实ADT会自动的使用debug密钥为应用程序签名,当然你也可以自己创建一个属于你自己的密钥,直接用Eclipse可视化创建就行了,很方便的,这里我就不介绍了这里我们用debug.keystore来生成Android签名证书的证书指纹(SHA1)值,可以在eclipse中直接查看:winows -> preferance -> android -> build。
如下图示:然后我们使用keytool工具来获取签名证书的sha1值,在DOS输入keytool -list-keystore C:\Users\bds\.android\debug.keystore红色部分为debug.keystore的路径,接下来会要你输入输入密钥库口令,默认输入“android”,这样子我们就能获取证书指纹(SHA1),如下图红色框框里面的东西就是我们需要的Android签名证书的证书指纹(SHA1)值,然后我们复制出来,输入到API key的安全码输入框里面,再用分号隔开加上你的应用程序包名,如 02:5C:80:25:B2:8F:6F:60:54:B9:F4:B2:EF:94:FF:EE:CC:3C:5A:29;com.example.baidu mapdemo 这样子我们就配置好了API key二、下载百度地图API库要在Android应用中使用百度地图API,就需要在工程中引用百度地图API开发包,下载地址/map/sdkandev-download.htm,下载Android SDKv2.1.3 lib库就行了三、在Android项目中引用百度地图新建Android项目 BaiduMapDemo,然后将百度地图API库加入工程,如下图∙在布局文件中添加百度地图控件,[html]view plaincopy1.<?xml version="1.0"encoding="utf-8"?>2.<LinearLayout xmlns:android="/apk/res/android"3.android:layout_width="fill_parent"4.android:layout_height="fill_parent"5.android:orientation="vertical">6.7.<com.baidu.mapapi.map.MapView8.android:id="@+id/bmapView"9.android:layout_width="fill_parent"10.android:layout_height="fill_parent"11.android:clickable="true"/>12.13.</LinearLayout>∙Activity界面代码,注释的很详细,相信你看得懂[java]view plaincopy1.package com.example.baidumapdemo;2.3.import android.app.Activity;4.import android.graphics.Bitmap;5.import android.os.Bundle;6.import android.widget.Toast;7.8.import com.baidu.mapapi.BMapManager;9.import com.baidu.mapapi.MKGeneralListener;10.import com.baidu.mapapi.map.MKEvent;11.import com.baidu.mapapi.map.MKMapViewListener;12.import com.baidu.mapapi.map.MapController;13.import com.baidu.mapapi.map.MapPoi;14.import com.baidu.mapapi.map.MapView;15.import api.basestruct.GeoPoint;16.17.public class MainActivity extends Activity {18.private Toast mToast;19.private BMapManager mBMapManager;20./**21. * MapView 是地图主控件22. */23.private MapView mMapView = null;24./**25. * 用MapController完成地图控制26. */27.private MapController mMapController = null;28./**29. * MKMapViewListener 用于处理地图事件回调30. */31. MKMapViewListener mMapListener = null;32.33.@Override34.protected void onCreate(Bundle savedInstanceState) {35.super.onCreate(savedInstanceState);36./**37. * 使用地图sdk前需先初始化BMapManager,这个必须在setContentView()先初始化38. */39. mBMapManager = new BMapManager(this);40.41.//第一个参数是API key,42.//第二个参数是常用事件监听,用来处理通常的网络错误,授权验证错误等,你也可以不添加这个回调接口43. mBMapManager.init("7ae13368159d6a513eaa7a17b9413b4b", new MKGeneralListener() {45.//授权错误的时候调用的回调函数46.@Override47.public void onGetPermissionState(int iError) {48.if (iError == MKEvent.ERROR_PERMISSION_DENIED) {49. showToast("API KEY错误, 请检查!");50. }51. }52.53.//一些网络状态的错误处理回调函数54.@Override55.public void onGetNetworkState(int iError) {56.if (iError == MKEvent.ERROR_NETWORK_CONNECT) {57. Toast.makeText(getApplication(), "您的网络出错啦!", Toast.LENGTH_LONG).show();58. }59. }60. });61.62.63. setContentView(yout.activity_main);64.65. mMapView = (MapView) findViewById(R.id.bmapView);66.67./**68. * 获取地图控制器69. */70. mMapController = mMapView.getController();71./**72. * 设置地图是否响应点击事件 .73. */74. mMapController.enableClick(true);75./**76. * 设置地图缩放级别77. */78. mMapController.setZoom(12);79.80./**81. * 显示内置缩放控件82. */83. mMapView.setBuiltInZoomControls(true);84.85./**86. * 保存精度和纬度的类,88. GeoPoint p = new GeoPoint((int)(22.547923 * 1E6), (int)(114.067368 * 1E6));89.//设置p地方为中心点90. mMapController.setCenter(p);91. mMapView.regMapViewListener(mBMapManager, new MKMapViewListener() {92.93./**94. * 地图移动完成时会回调此接口方法95. */96.@Override97.public void onMapMoveFinish() {98. showToast("地图移动完毕!");99. }100.101./**102. * 地图加载完毕回调此接口方法103. */104.@Override105.public void onMapLoadFinish() {106. showToast("地图载入完毕!");107. }108.109./**110. * 地图完成带动画的操作(如: animationTo())后,此回调被触发111. */112.@Override113.public void onMapAnimationFinish() {114.115. }116.117./**118. * 当调用过 mMapView.getCurrentMap()后,此回调会被触发119. * 可在此保存截图至存储设备120. */121.@Override122.public void onGetCurrentMap(Bitmap arg0) {123.124. }125.126./**127. * 点击地图上被标记的点回调此方法128. *129. */130.@Override131.public void onClickMapPoi(MapPoi arg0) {132.if (arg0 != null){133. showToast(arg0.strText);134. }135. }136. });137. }138.139.140.141.@Override142.protected void onResume() {143.//MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()144. mMapView.onResume();145.super.onResume();146. }147.148.149.150.@Override151.protected void onPause() {152.//MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()153. mMapView.onPause();154.super.onPause();155. }156.157.@Override158.protected void onDestroy() {159.//MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy()160. mMapView.destroy();161.162.//退出应用调用BMapManager的destroy()方法163.if(mBMapManager != null){164. mBMapManager.destroy();165. mBMapManager = null;166. }167.168.super.onDestroy();169. }170.171.172.173./**174. * 显示Toast消息175. * @param msg176. */177.private void showToast(String msg){178.if(mToast == null){179. mToast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);180. }else{181. mToast.setText(msg);182. mToast.setDuration(Toast.LENGTH_SHORT);183. }184. mToast.show();185. }186.187.188.}1. BMapManager是地图的引擎类,这个必须在setContentView方法之前被实例化,我们需要使用其方法init(String strKey,MKGeneralListener listener)来加入API key,MKGeneralListener 该接口返回网络状态,授权验证等结果,我们需要实现该接口以处理相应事件2. MapView就是我们的地图控件了,MapView有和Activity同步的生命周期,例如onResume() ,onPause() ,onRestoreInstanceState(Bundle state) ,destroy()等,我们可以通过getController()方法获取地图控制器MapController,这个对象可用于控制和驱动平移和缩放等3. MapView有两个接口可以注册,分别是MKMapTouchListener(地图点击事件监听器),MKMapViewListener(地图监听器)上面的Demo我给MapView注册了MKMapViewListener,也简单实现了里面的几个方法,接下来我会带着大家详细的了解这里面的方法,希望大家到时候关注我的博客当然,我们在程序运行之前,还必须加入相对于的权限[html]view plaincopy1.<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>2.<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>3.<uses-permission android:name="android.permission.INTERNET"/>4.<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>5.<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>6.<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>7.<uses-permission android:name="android.permission.READ_PHONE_STATE"/>运行结果好了,结束了.此篇文章是转载的csdn的一篇博客,谢谢原博主吧。