您的位置:首页 > 移动开发 > Android开发

android百度地图开发V4.5最新版(5)---路线规划问题步行,骑车,公交,驾车等。

2017-12-07 16:25 573 查看
这篇博客只做步行路线规划的实现。其他的都是大同小异。废话不多说,直接上代码。

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)得到。这样就得出一条路劲。

各位在开发的时候可以展示所有路劲,然后点击再进行路线的规划。

最后图片如下:





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐