高德地圖駕車路徑規劃詳情獲取

用到這個功能,花了不少時間,還是在大神的指點下才弄出來。沒辦法畢竟菜鳥一個,原來沒有寫博客的習慣,從來都是看大神的,然後去用,現在開始記錄一下吧,。。。。菜鳥博客,有不對的地方輕噴。。。

從高德的sdk和demo裏 找了半天,剛開始一直在3D地圖裏面找,尋找有關drive的類,不要怪 英文畢竟太菜。。。。也百度了一些相關的 ,但是我還是沒弄出來….最後才找到原來這個東西在 AMap_Android_Navi SDK_All 這個demo裏…這個demo裏面有一個 GetNaviStepsAndLinksActivity 類,真是服了自己的智商….. 類的代碼

public class GetNaviStepsAndLinksActivity extends BaseActivity {

private AMapNaviPath mAMapNaviPath;
private List<AMapNaviStep> steps;
private List<AMapNaviLink> links;
private List<AMapNaviGuide> guides;

@Override
protected void onCreate(Bundle savedInstanceState) {

    mEndLatlng = new NaviLatLng(45.742367, 126.661665);
    mStartLatlng = new NaviLatLng(22.373594, 113.562575);

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_basic_navi);
    mAMapNaviView = (AMapNaviView) findViewById(R.id.navi_view);
    mAMapNaviView.onCreate(savedInstanceState);
    mAMapNaviView.setAMapNaviViewListener(this);


}

@Override
public void onNaviInfoUpdate(NaviInfo naviinfo) {
    super.onNaviInfoUpdate(naviinfo);
    int currentStep = naviinfo.getCurStep();
    int currentLink = naviinfo.getCurLink();
    Log.d("wlx", "當前Step index:" + currentStep + "當前Link index:" + currentLink);
}

@Override
public void onCalculateRouteSuccess() {
    super.onCalculateRouteSuccess();


    //概覽
    guides = mAMapNavi.getNaviGuideList();

    //詳情
    mAMapNaviPath = mAMapNavi.getNaviPath();
    steps = mAMapNaviPath.getSteps();

    if (guides.size() == steps.size()) {

        Toast.makeText(this, "看log", Toast.LENGTH_SHORT).show();
        for (int i = 0; i < steps.size() - 1; i++) {
            //guide step相生相惜,指的是大導航段
            AMapNaviGuide guide = guides.get(i);
            Log.d("wlx", "AMapNaviGuide 路線經緯度:" + guide.getCoord() + "");
            Log.d("wlx", "AMapNaviGuide 路線名:" + guide.getName() + "");
            Log.d("wlx", "AMapNaviGuide 路線長:" + guide.getLength() + "m");
            Log.d("wlx", "AMapNaviGuide 路線耗時:" + guide.getTime() + "s");
            Log.d("wlx", "AMapNaviGuide 路線IconType" + guide.getIconType() + "");
            AMapNaviStep step = steps.get(i);
            Log.d("wlx", "AMapNaviStep 距離:" + step.getLength() + "m" + " " + "耗時:" + step.getTime() + "s");
            Log.d("wlx", "AMapNaviStep 紅綠燈個數:" + step.getTrafficLightNumber());


            //link指的是大導航段中的小導航段
            links = step.getLinks();
            for (AMapNaviLink link : links) {

// 請看com.amap.api.navi.enums.RoadClass,以及幫助文檔
Log.d(“wlx”, “AMapNaviLink 道路名:” + link.getRoadName() + ” ” + “道路等級:” + link.getRoadClass());
// 請看com.amap.api.navi.enums.RoadType,以及幫助文檔
Log.d(“wlx”, “AMapNaviLink 道路類型:” + link.getRoadType());

            }
        }

    } else {
        Toast.makeText(this, "BUG!請聯繫我們", Toast.LENGTH_SHORT).show();
    }


}

}
還真是有點調皮,詳情獲取在 public void onCalculateRouteSuccess() 這個方法裏面,相信大家都一看就會懂。

這裏得到的icontype是高德指定的一堆數字,如果需要顯示路況轉向的圖片的話,那麼獲得到這些數字之後要自己去對應圖片顯示,如果你不想去找本菜鳥可以貼幾個出來
public class AMapNaviGuide {
/* @deprecated /
public static int IconTypeNone = 0;
/* @deprecated /
public static int IconTypeDefault = 1;
/* @deprecated /
public static int IconTypeLeft = 2;
/* @deprecated /
public static int IconTypeRight = 3;
/* @deprecated /
public static int IconTypeLeftFront = 4;
/* @deprecated /
public static int IconTypeRightFront = 5;
/* @deprecated /
public static int IconTypeLeftBack = 6;
/* @deprecated /
public static int IconTypeRightBack = 7;
/* @deprecated /
public static int IconTypeLeftAndAround = 8;
/* @deprecated /
public static int IconTypeStraight = 9;
/* @deprecated /
public static int IconTypeArrivedWayPoint = 10;
/* @deprecated /
public static int IconTypeEnterRoundabout = 11;
/* @deprecated /
public static int IconTypeOutRoundabout = 12;
/* @deprecated /
public static int IconTypeArrivedServiceArea = 13;
/* @deprecated /
public static int IconTypeArrivedTollGate = 14;
/* @deprecated /
public static int IconTypeArrivedDestination = 15;
/* @deprecated /
public static int IconTypeArrivedTunnel = 16;
/* @deprecated /
public static int IconTypeCrosswalk = 17;
/* @deprecated /
public static int IconTypeOverpass = 18;
/* @deprecated /
public static int IconTypeUnderpass = 19;
/* @deprecated /
public static int IconTypeSquare = 20;
/* @deprecated /
public static int IconTypePark = 21;
/* @deprecated /
public static int IconTypeStaircase = 22;
/* @deprecated /
public static int IconTypeLift = 23;
當然圖片可以自己重新做, 這裏實現路徑詳情顯示展示出來就很簡單了,自己寫了list集合獲取到數據之後用Adapter寫入控件就行啦。。
好吧,就到這裏了 本來想貼一下自己的代碼,但是顯示不出來 。不清楚情況。
希望能對大家有一點點幫助..

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