android百度地图开发V4.5最新版(5)---路线规划问题步行,骑车,公交,驾车等。
这篇博客只做步行路线规划的实现。其他的都是大同小异。废话不多说,直接上代码。
1:新建xml文件,增加布局:
<!-- 放入百度地图的mapview -->
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapsView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/button1">
<!-- 起点输入框 -->
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="50"
android:layout_weight="1"
android:hint="请输入起点">
</EditText>
<!-- 终点输入框 -->
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="50"
android:layout_weight="1"
android:hint="请输入终点">
</EditText>
</LinearLayout>
<!-- 搜索执行按钮 -->
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="《搜索》" />
</RelativeLayout>
<ListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
</ListView>
这里的listview的作用格式展示路线的point节点信息。
2:建立SDKlistioner监听
OnGetRoutePlanResultListener listener = new OnGetRoutePlanResultListener() {
@Override
//步行
public void onGetWalkingRouteResult(WalkingRouteResult walkingRouteResult) {
if (walkingRouteResult == null) {
Toast.makeText(LuxianActivity.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();
return;
}
WalkingRouteLine route = walkingRouteResult.getRouteLines().get(0);
List<WalkingRouteLine.WalkingStep> walkingStepList =route.getAllStep();
for (WalkingRouteLine.WalkingStep walkingStep:walkingStepList){
Map<String, String> map1 = new HashMap<String, String>();
map1.put("经纬度",walkingStep.getInstructions());
data.add(map1);
setListAdapter(new SimpleAdapter(LuxianActivity.this,data,android.R.layout.simple_list_item_1,
new String[]{"经纬度"}, //每行显示一个姓名
new int[]{android.R.id.text1})); //名字在text1上显示));
Log.e("路线", walkingStep.getInstructions());
}
WalkingRouteOverlay overlay = new WalkingRouteOverlay(mBaiduMap);
mBaiduMap.setOnMarkerClickListener(overlay);
routeOverlay = overlay;
//设置路线数据
overlay.setData(walkingRouteResult.getRouteLines().get(0));
overlay.addToMap(); //将所有overlay添加到地图中
overlay.zoomToSpan();//缩放地图
}
@Override
//公交
public void onGetTransitRouteResult(TransitRouteResult transitRouteResult) {
}
@Override
public void onGetMassTransitRouteResult(MassTransitRouteResult massTransitRouteResult) {
}
@Override
//驾车
public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {
}
@Override
//室内
public void onGetIndoorRouteResult(IndoorRouteResult indoorRouteResult) {
}
@Override
//骑行
public void onGetBikingRouteResult(BikingRouteResult bikingRouteResult) {
}
};
3:输入起始点和终止点
PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", start);
PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", end);
4:搜索Search初始化
mSearch=RoutePlanSearch.newInstance();
5:增加监听:
mSearch.setOnGetRoutePlanResultListener(listener);
6:开始调用方法搜索步行方案。
mSearch.walkingSearch((new WalkingRoutePlanOption())
.from(stNode)
.to(enNode));
至此步行搜索路劲开发完毕,
特别说明:步行搜索不止一条路劲,但我在代码中直接将路劲默认为get(0)得到。这样就得出一条路劲。
各位在开发的时候可以展示所有路劲,然后点击再进行路线的规划。
最后图片如下: