高级部分(百度地图三)路线检索

布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button 
            android:id="@+id/btnWalk"
            android:onClick="routePlanClick"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="步行方式"/>
        <Button 
            android:id="@+id/btnTransit"
            android:onClick="routePlanClick"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="公共交通方式"/>
        <Button 
            android:id="@+id/btnDrive"
            android:onClick="routePlanClick"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="驾车方式"/>
    </LinearLayout>


    <com.baidu.mapapi.map.MapView
        android:id="@+id/mview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>


</LinearLayout>


//==============================================================================================

逻辑代码:

package com.qianfeng.mytext01;


import java.util.List;


import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.overlayutil.DrivingRouteOverlay;
import com.baidu.mapapi.overlayutil.TransitRouteOverlay;
import com.baidu.mapapi.overlayutil.WalkingRouteOverlay;
import com.baidu.mapapi.search.core.VehicleInfo;
import com.baidu.mapapi.search.route.DrivingRouteLine;
import com.baidu.mapapi.search.route.DrivingRoutePlanOption;
import com.baidu.mapapi.search.route.DrivingRouteResult;
import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener;
import com.baidu.mapapi.search.route.PlanNode;
import com.baidu.mapapi.search.route.RoutePlanSearch;
import com.baidu.mapapi.search.route.TransitRouteLine;
import com.baidu.mapapi.search.route.TransitRoutePlanOption;
import com.baidu.mapapi.search.route.TransitRouteResult;
import com.baidu.mapapi.search.route.WalkingRouteLine;
import com.baidu.mapapi.search.route.WalkingRoutePlanOption;
import com.baidu.mapapi.search.route.WalkingRouteResult;
import com.baidu.mapapi.search.route.TransitRouteLine.TransitStep;
import com.baidu.mapapi.search.route.TransitRouteLine.TransitStep.TransitRouteStepType;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.View;
public class MainActivity extends Activity {
private RoutePlanSearch routePlanSearch;//路线规划
private MapView mView;
private BaiduMap bMap;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
mView=(MapView) findViewById(R.id.mview);
bMap=mView.getMap();
//设置中心地点
bMap.setMapStatus(MapStatusUpdateFactory.newLatLng(new LatLng(23.149028, 113.3111)));
//创建实现各种类型路线搜索的对象
routePlanSearch=RoutePlanSearch.newInstance();
//绑定监听器,用于接收搜索的路线结果
routePlanSearch.setOnGetRoutePlanResultListener(new OnGetRoutePlanResultListener() {

@Override
public void onGetWalkingRouteResult(WalkingRouteResult arg0) {
// TODO Auto-generated method stub
//获取所以的可行走的路线
List<WalkingRouteLine>allLine=arg0.getRouteLines();
Log.v("TAG", "总路线数:" + allLine.size());
//取出所有可用路线中的一条
WalkingRouteLine aLine=allLine.get(0);
//获取本条路线的距离
int distance=aLine.getDistance();
//获取本条路线的时长
int duration=aLine.getDuration();
Log.v("TAG", "本路线的距离:" + distance + " , 本路线的行走时长:" + duration);
//在地图上标注出该条路线
WalkingRouteOverlay overlay=new WalkingRouteOverlay(bMap);
overlay.setData(aLine);//给图层绑定数据
overlay.addToMap();//显示绑定完数据的图层
}

@Override
public void onGetTransitRouteResult(TransitRouteResult arg0) {
// TODO Auto-generated method stub
//获取所有的公交通路线
List<TransitRouteLine>allLine=arg0.getRouteLines();
Log.v("TAG", "可用的公共交通的方式: " + allLine.size());
//获取当前路线的每一段
TransitRouteLine aLine=allLine.get(0);
//获取当前路线的每一段
List<TransitStep>allStep=aLine.getAllStep();
for (TransitStep step : allStep) {
String ins=step.getInstructions();//获取该段路的说明
int distance=step.getDistance();//获取该段路的距离
int duration=step.getDuration();//该段路的时长
Log.v("TAG", "该段路的信息:ins = " + ins + " , distance = " + distance + " , duration = " + duration);
//获取每一段路线的类型
TransitRouteStepType type=step.getStepType();
if(type == TransitRouteStepType.WAKLING){
Log.v("TAG", "步行路段");
}else if(type == TransitRouteStepType.SUBWAY){
Log.v("TAG", "地铁路段");
VehicleInfo info = step.getVehicleInfo();//获取该段路的交通工具的信息
int passNum = info.getPassStationNum();
String title = info.getTitle();
int totalprice = info.getTotalPrice();
int zonePrice = info.getZonePrice();
String uid = info.getUid();
Log.v("TAG", "该段地铁信息:passNum = " + passNum + " , title = " + title + " , totalprice = " + totalprice + " , zonePrice = " + zonePrice + " , uid = " + uid);
}else if(type == TransitRouteStepType.BUSLINE){
Log.v("TAG", "公交路段");
VehicleInfo info = step.getVehicleInfo();//获取该段路的交通工具的信息
int passNum = info.getPassStationNum();
String title = info.getTitle();
int totalprice = info.getTotalPrice();
int zonePrice = info.getZonePrice();
String uid = info.getUid();
Log.v("TAG", "该段公交信息:passNum = " + passNum + " , title = " + title + " , totalprice = " + totalprice + " , zonePrice = " + zonePrice + " , uid = " + uid);
}
}
int distance = aLine.getDistance();
int duration = aLine.getDuration();
Log.v("TAG", "距离:" + distance + " , 时长:" + duration);
//在地图上标注该条路线
TransitRouteOverlay overlay = new TransitRouteOverlay(bMap);
overlay.setData(aLine);
overlay.addToMap();
}

@Override
public void onGetDrivingRouteResult(DrivingRouteResult arg0) {
// TODO Auto-generated method stub
List<DrivingRouteLine>allLine=arg0.getRouteLines();
Log.v("TAG", "可用驾车路线:" + allLine.size());
//获取可用路线中的一条
DrivingRouteLine aLine=allLine.get(0);
//获取该条路线的信息
int distance = aLine.getDistance();
int duration = aLine.getDuration();
Log.v("TAG", "该驾车路线的距离:" + distance + "m , 用时:" + duration + "s");
//在地图上标注该路线
DrivingRouteOverlay overlay = new DrivingRouteOverlay(bMap);
overlay.setData(aLine);
overlay.addToMap();
}
});
}
public void routePlanClick(View v){
int id=v.getId();
switch (id) {
case R.id.btnWalk://步行路线
//创建用于封装步行规划的对象
WalkingRoutePlanOption walkOpt=new WalkingRoutePlanOption();
//起点对象
PlanNode start=PlanNode.withCityNameAndPlaceName("广州","智汇园");
walkOpt.from(start);
PlanNode stop=PlanNode.withCityNameAndPlaceName("广州", "广州塔");
//终点
walkOpt.to(stop);
routePlanSearch.walkingSearch(walkOpt);
break;
case R.id.btnTransit://公共交通路线
TransitRoutePlanOption transitOpt=new TransitRoutePlanOption();
transitOpt.city("广州");
PlanNode tStart = PlanNode.withCityNameAndPlaceName("广州", "智汇园");//起点对象
transitOpt.from(tStart);
PlanNode tStop = PlanNode.withCityNameAndPlaceName("广州", "广州火车站");//终点对象
transitOpt.to(tStop);
routePlanSearch.transitSearch(transitOpt);
break;
case R.id.btnDrive://驾车路线
DrivingRoutePlanOption drivingOpt = new DrivingRoutePlanOption();
PlanNode dStart = PlanNode.withCityNameAndPlaceName("广州", "智汇园");//起点对象
drivingOpt.from(dStart);
PlanNode dStop = PlanNode.withCityNameAndPlaceName("广州", "广州塔");//终点对象
drivingOpt.to(dStop);
routePlanSearch.drivingSearch(drivingOpt);

break;
default:
break;
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值