高德地圖-添加路線規劃(自駕、步行...)

官方參考資料地址:(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) {

    }

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