android-百度地图路径规划(二)

本文是在上一篇文章基础上进行的:http://blog.csdn.net/wzhworld/article/details/79130975

同上篇文章,这些内容都是在百度地图sdk可以看到,但是可能百度因为为了把地图分成几个功能,导致一些内容讲得不清晰,所以就有了以下的笔记,就结合着demo,别人实现的功能,写出来。

官方文档http://lbsyun.baidu.com/index.php?title=androidsdk/guide/route/drive

驾车线路规划
1创建驾车线路规划检索实例;
mSearch = RoutePlanSearch.newInstance();
2创建驾车线路规划检索监听者;
OnGetRoutePlanResultListener listener = new OnGetRoutePlanResultListener() {  

    public void onGetDrivingRouteResult(DrivingRouteResult result) {  
        //获取驾车线路规划结果  
    }  
   ......
};
3设置驾车线路规划检索监听者;
mSearch.setOnGetRoutePlanResultListener(listener);
4准备检索起、终点信息;
PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", "龙泽");  

PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", "西单");
5发起驾车线路规划检索;
mSearch.drivingSearch((new DrivingRoutePlanOption())  

    .from(stNode)  
    .to(enNode));
6释放检索实例;
mSearch.destory();
主要内容就在以上的代码,其中遇到几个问题,使用路线规划的图层的时候找不到相关的类 DrivingRouteOverlay ,所以就百度地图的api介绍有点乱,选择了导航功能却没有导航路径规划的类。所以就找到了 工具包,解压放到代码块即可。

第二个点就是PlanNode如果找不到相关地址会返回空,然后我只是需要经纬度来定位我的目的地,所以使用经纬度直接定位目的地即可。PlanNode.withLocation(endLl)

保证代码顺序为以上介绍的,否则可能初始化的时候顺序不对造成为空。以下为代码块

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        initPlan();
    }

    private void setLocation() {
        LatLng fromLl = new LatLng(sLocation.getLatitude(),sLocation.getLongitude());
        LatLng endLl = new LatLng(23.664288,116.628909);
        startNode = PlanNode.withLocation(fromLl);
        endNode = PlanNode.withLocation(endLl);
    }

    private void initPlan() {
        mSearch = RoutePlanSearch.newInstance();
        mSearch.setOnGetRoutePlanResultListener(new OnGetRoutePlanResultListener() {
            @Override
            public void onGetWalkingRouteResult(WalkingRouteResult walkingRouteResult) {

            }

            @Override
            public void onGetTransitRouteResult(TransitRouteResult transitRouteResult) {

            }

            @Override
            public void onGetMassTransitRouteResult(MassTransitRouteResult massTransitRouteResult) {

            }

            @Override
            public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {
                if (drivingRouteResult == null || drivingRouteResult.error !=   SearchResult.ERRORNO.NO_ERROR) {
                    Toast.makeText(MainActivity.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();
                }
                if (drivingRouteResult.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
                    // 起终点或途经点地址有岐义,通过以下接口获取建议查询信息
                    drivingRouteResult.getSuggestAddrInfo();
                    return;
                }
                if (drivingRouteResult.error == SearchResult.ERRORNO.NO_ERROR) {
                    if (drivingRouteResult.getRouteLines().size() >= 1) {
//                        DrivingRouteLine route = drivingRouteResult.getRouteLines().get(0);
                        DrivingRouteOverlay overlay = new DrivingRouteOverlay(mBaiduMap);
                        mRouteOverlay = overlay;
                        mBaiduMap.setOnMarkerClickListener(overlay);
                        overlay.setData(drivingRouteResult.getRouteLines().get(0));
                        overlay.addToMap();
                        overlay.zoomToSpan();
                    } else {
                        Log.d("route result", "结果数<0");
                        return;
                    }
                }
            }

            @Override
            public void onGetIndoorRouteResult(IndoorRouteResult indoorRouteResult) {

            }

            @Override
            public void onGetBikingRouteResult(BikingRouteResult bikingRouteResult) {

            }
        });
    }
@Override
    public void onClick(View view) {
        if(R.id.plan == view.getId()){
            setLocation();
            mSearch.drivingSearch(new DrivingRoutePlanOption().from(startNode).to(endNode));
        }
       
    }



 


猜你喜欢

转载自blog.csdn.net/wzhworld/article/details/79153009