Android 百度地图教程
1.成为开发者 http://lbsyun.baidu.com/
2.创建应用,申请密匙:
![](https://img.haomeiwen.com/i2381548/ef357fc41540d6a6.png)
生成SHA1工具:http://download.csdn.net/detail/xiaoxin_android/9493330#comment
开发版:未签名
发布版:签名
3.把相关类库导入工程,SDK地址:http://lbsyun.baidu.com/sdk/download
4.添加相应权限
![](https://img.haomeiwen.com/i2381548/98fe1092b9c93cb7.png)
5.添加秘钥和服务
![](https://img.haomeiwen.com/i2381548/a8d5dc7c2d4bc42e.png)
6.初始化SDK
![](https://img.haomeiwen.com/i2381548/51db97ccd47ac40b.png)
7.创建带有Map的Activity
![](https://img.haomeiwen.com/i2381548/aadf0e42a5017a41.png)
8.找到MapView控件,设置Map的生命周期,并获取BaiduMap
![](https://img.haomeiwen.com/i2381548/5f94dcfb2889fbf7.png)
![](https://img.haomeiwen.com/i2381548/db5cd5d0e81c0c1c.png)
9.初始化定位设置并设置监听
![](https://img.haomeiwen.com/i2381548/8859e2933f4f71d1.png)
![](https://img.haomeiwen.com/i2381548/61e0f763a4fbbc16.png)
10.检索的使用
![](https://img.haomeiwen.com/i2381548/089069bbcd9127a7.png)
![](https://img.haomeiwen.com/i2381548/a5cbe95118b01a3b.png)
11.检索的监听回调
![](https://img.haomeiwen.com/i2381548/8c2741916efa8c96.png)
11.设置mark点和点击事件
![](https://img.haomeiwen.com/i2381548/5576fbf06fd9d663.png)
12.步行线路和测距
![](https://img.haomeiwen.com/i2381548/5214af01dbc356e3.png)
![](https://img.haomeiwen.com/i2381548/cb07dad64742b667.png)
13.公交路线
![](https://img.haomeiwen.com/i2381548/d719ae00d87b267a.png)
14.自驾路线
![](https://img.haomeiwen.com/i2381548/77aa7d8c5aa18c85.png)
15.路线的监听,及路线的文字描述
classMyOnGetRoutePlanResultListenerimplementsOnGetRoutePlanResultListener {
/**
* 步行结果
*
*@param
*/
@Override
public voidonGetWalkingRouteResult(WalkingRouteResult result) {
if(result ==null
|| SearchResult.ERRORNO.RESULT_NOT_FOUND== result.error) {
Toast.makeText(getApplicationContext(),"未查询到结果", Toast.LENGTH_SHORT).show();
return;
}
if(mMethod==BuXin) {
mWalkingRouteOverlay=newMyWalkingRouteOverlay(mBaiduMap);
mBaiduMap.setOnMarkerClickListener(mWalkingRouteOverlay);
WalkingRouteLine line = result.getRouteLines().get(0);
mWalkingRouteOverlay.setData(line);// 设置数据
mWalkingRouteOverlay.addToMap();// 添加到地图上
mWalkingRouteOverlay.zoomToSpan();// 自动缩放级别
List allStep = line.getAllStep();
String content ="";
for(inti =0; i < allStep.size(); i++) {
WalkingRouteLine.WalkingStep walkingStep = allStep.get(i);
String instructions = walkingStep.getInstructions();
if(i < allStep.size()-1) {
content += instructions +"\n";
}else{
content += instructions;
}
}
mTvContent.clearComposingText();
mTvContent.setText(content);
mSl.setVisibility(View.VISIBLE);
setHeight();
}
}
/**
* 换乘路线结果回调
*
*@param
*/
@Override
public voidonGetTransitRouteResult(TransitRouteResult result) {
if(result ==null
|| SearchResult.ERRORNO.RESULT_NOT_FOUND== result.error) {
Toast.makeText(getApplicationContext(),"未查询到结果", Toast.LENGTH_SHORT).show();
return;
}
if(mMethod==GongJiao) {
mTransitRouteOverlay=newMyTransitRouteOverlay(mBaiduMap);
mBaiduMap.setOnMarkerClickListener(mTransitRouteOverlay);
TransitRouteLine line = result.getRouteLines().get(0);
mTransitRouteOverlay.setData(line);// 设置数据
mTransitRouteOverlay.addToMap();// 添加到地图上
mTransitRouteOverlay.zoomToSpan();// 自动缩放级别
List allStep = line.getAllStep();
String content ="";
for(inti =0; i < allStep.size(); i++) {
TransitRouteLine.TransitStep transitStep = allStep.get(i);
String instructions = transitStep.getInstructions();
if(i
content += instructions +"\n";
}else{
content += instructions;
}
}
mTvContent.clearComposingText();
mTvContent.setText(content);
mSl.setVisibility(View.VISIBLE);
setHeight();
}
}
/**
* 跨城公共交通路线结果回调
*
*@parammassTransitRouteResult
*/
@Override
public voidonGetMassTransitRouteResult(MassTransitRouteResult massTransitRouteResult) {
}
/**
* 驾车路线结果回调
*
*@paramresult
*/
@Override
public voidonGetDrivingRouteResult(DrivingRouteResult result) {
if(result ==null
|| SearchResult.ERRORNO.RESULT_NOT_FOUND== result.error) {
Toast.makeText(getApplicationContext(),"未查询到结果", Toast.LENGTH_SHORT).show();
return;
}
if(mMethod==ZiJia) {
mDrivingRouteOverlay=newMyDrivingRouteOverlay(mBaiduMap);
mBaiduMap.setOnMarkerClickListener(mDrivingRouteOverlay);
DrivingRouteLine line = result.getRouteLines().get(0);
mDrivingRouteOverlay.setData(line);
mDrivingRouteOverlay.addToMap();
mDrivingRouteOverlay.zoomToSpan();
List routeLines = result.getRouteLines();
String content ="";
for(inti =0; i < routeLines.size(); i++) {
DrivingRouteLine drivingRouteLine = routeLines.get(i);
List allStep = drivingRouteLine.getAllStep();
for(intj =0; j < allStep.size(); j++) {
DrivingRouteLine.DrivingStep drivingStep = allStep.get(j);
String instructions = drivingStep.getInstructions();
if(j < allStep.size()-1) {
content += instructions +"\n";
}else{
content += instructions;
}
}
}
mTvContent.clearComposingText();
mTvContent.setText(content);
mSl.setVisibility(View.VISIBLE);
setHeight();
}
}
注意:6.0的写入权限需要动态申请,不然出不来地图
BaiDuMapAPI文档地址:http://developer.baidu.com/map/reference/
建议使用sdk里的api文档
github源码地址:https://github.com/LostDeer/BaiDuMap