高德地图-添加路线规划(自驾、步行...)

官方参考资料地址:(http://lbs.amap.com/api/android-sdk/guide/route-plan/drive/)

官方文档:http://a.amap.com/lbs/static/unzip/Android_Map_Doc/index.html

请注意:使用上述功能需要下载地图SDK,导入搜索功能的jar包。

Activity关键代码:

/*初始化 搜索路线所需的类*/
    private void initRouteSearch() {
        RouteSearch routeSearch = new RouteSearch(this);
        routeSearch.setRouteSearchListener(this);
        if (shopLatitude != -1 && shopLongitude != -1) {
            fromAndTo = new RouteSearch.FromAndTo(new LatLonPoint(fromLatitude, fromLongitude),
                    new LatLonPoint(shopLatitude, shopLongitude));
        }
    }


/*计算步行路线*/
    private void calculateWalkRoute() {
        showProgress("正在加载...");
        //初始化query对象,fromAndTo是包含起终点信息,walkMode是步行路径规划的模式
        RouteSearch.WalkRouteQuery walkRouteQuery = new RouteSearch.WalkRouteQuery(
                fromAndTo, RouteSearch.WALK_DEFAULT);
        routeSearch.calculateWalkRouteAsyn(walkRouteQuery);
    }

    /*计算公交路线*/
    private void calculateBusRoute() {
        showProgress("正在加载...");
        // fromAndTo包含路径规划的起点和终点,RouteSearch.BusLeaseWalk表示公交查询模式
// 第三个参数表示公交查询城市区号,第四个参数表示是否计算夜班车,0表示不计算,1表示计算
        RouteSearch.BusRouteQuery busRouteQuery = new RouteSearch.BusRouteQuery(
                fromAndTo, RouteSearch.BUS_DEFAULT, "020", 1);
        routeSearch.calculateBusRouteAsyn(busRouteQuery);
    }

    /*计算自驾路线*/
    private void calculateCarRoute() {
        showProgress("正在加载...");
        // fromAndTo包含路径规划的起点和终点,drivingMode表示驾车模式
// 第三个参数表示途经点(最多支持16个),第四个参数表示避让区域(最多支持32个),第五个参数表示避让道路
        RouteSearch.DriveRouteQuery driveRouteQuery = new RouteSearch.DriveRouteQuery(
                fromAndTo, RouteSearch.DRIVING_MULTI_STRATEGY_FASTEST_SHORTEST_AVOID_CONGESTION, null, null, "");
        routeSearch.calculateDriveRouteAsyn(driveRouteQuery);
    }


@Override
    public void onBusRouteSearched(BusRouteResult busRouteResult, int i) {
        dismissProgress();
        if (i==1000){
            //添加的方式都一样,只是Overlay不一样;
        }
    }

    @Override
    public void onDriveRouteSearched(DriveRouteResult driveRouteResult, int i) {
        dismissProgress();
        if (i==1000){
            DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay(
                            this, aMap, drivePath, result.getStartPos(), result.getTargetPos());
           aMap.clear();
           drivingRouteOverlay.removeFromMap();
           drivingRouteOverlay.addToMap();
           drivingRouteOverlay.zoomToSpan();
        }
    }

    @Override
    public void onWalkRouteSearched(WalkRouteResult walkRouteResult, int i) {
        dismissProgress();
        if (i == 1000) {//1000代表成功
            //在地图上绘制路径:
            WalkRouteOverlay walkRouteOverlay = new WalkRouteOverlay(this, aMap, walkPath, walkRouteResult.getStartPos(), walkRouteResult.getTargetPos());
            aMap.clear();
            walkRouteOverlay.removeFromMap();//去掉Overlay上所有的Marker。
            walkRouteOverlay.addToMap();//将Overlay添加到地图上显示
            walkRouteOverlay.zoomToSpan();//调整地图能看到起点和终点
        }
    }

    @Override
    public void onRideRouteSearched(RideRouteResult rideRouteResult, int i) {

    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章