日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android开发之高德API篇:2、高德API线路规划

發布時間:2025/3/15 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发之高德API篇:2、高德API线路规划 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TIME:2020年7月6日

2、高德API線路規劃----步行線路規劃

  • 前言:
  • step1 工程配置
  • step2 整體實現過程
  • step3 具體實現過程
  • 總結
  • 附上源碼

前言:

該篇博客主要是介紹高德地圖API的線路規劃,在你開始閱讀本篇博客之前,希望各位小哥哥小姐姐們看一下上篇博客“Android開發之高德地圖API篇:1、高德地圖API之實時定位+軌跡可視化”的前言部分,可能他不是你需要的技術,但是我在其中提到了一些思維方法,如果你是小白,希望可以對你有所啟示。

下面這正是開始本篇干貨

step1 工程配置

此處不做介紹,參見Android Studio工程配置
特別說明,我們要使用到的jar包有:

step2 整體實現過程

第 1 步,初始化 RouteSearch 對象
第 2 步,設置數據回調監聽器
第 3 步,設置搜索參數
第 4 步,發送請求
第 5 步,接收數據
該過程來源于官方,便于理解線路規劃的整體思路
詳見:步行線路規劃

自己的理解:
就我個人理解而言,在你設定了起始坐標點和終點坐標點后,通過jar包提供的線路規劃回調方法onWalkRouteSearched()自動規劃出線路;但是在地圖上是無法直接顯示出路徑的,所以我們需要在地圖之上設置圖層,用于顯示路徑;最后就可以得到我們想要的路徑了。

step3 具體實現過程

基本實現思路:

1、初始化AMap對象、MapView對象、RouteSearch對象
2、顯示地圖并進行相關設置
3、注冊監聽
4、開始搜索路徑規劃方案
5、步行路線搜索結果方法回調

基本思路1的實現

private AMap aMap;private MapView mapView;private Context mContext;private RouteSearch mRouteSearch;private WalkRouteResult mWalkRouteResult;

基本思路2的實現

/*** 初始化AMap對象*/private void init() {if (aMap == null) {aMap = mapView.getMap();geoMarker = aMap.addMarker(new MarkerOptions().anchor(0.5f, 0.5f).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));}search = (Button) findViewById(R.id.search);mWalk = (ImageButton) findViewById(R.id.route_walk);registerListener();mRouteSearch = new RouteSearch(this);mRouteSearch.setRouteSearchListener(this);mBottomLayout = (RelativeLayout) findViewById(R.id.bottom_layout);mBusResultLayout = (LinearLayout) findViewById(R.id.bus_result);mRotueTimeDes = (TextView) findViewById(R.id.firstline);mRouteDetailDes = (TextView) findViewById(R.id.secondline);}

基本思路3的實現

/*** 注冊監聽*/private void registerListener() {aMap.setOnMapClickListener(RouteActivity.this);aMap.setOnMarkerClickListener(RouteActivity.this);aMap.setOnInfoWindowClickListener(RouteActivity.this);aMap.setInfoWindowAdapter(RouteActivity.this);search.setOnClickListener(this);mWalk.setOnClickListener(this);//地址編碼geocoderSearch = new GeocodeSearch(this);geocoderSearch.setOnGeocodeSearchListener(this);progDialog = new ProgressDialog(this);}

基本思路4的實現

/*** 開始搜索路徑規劃方案*/public void searchRouteResult(int routeType, int mode) {if (mStartPoint == null) {ToastUtil.show(mContext, "起點未設置");return;}if (mEndPoint == null) {ToastUtil.show(mContext, "終點未設置");}showProgressDialog();final RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(mStartPoint, mEndPoint);if (routeType == ROUTE_TYPE_WALK) {// 步行路徑規劃WalkRouteQuery query = new WalkRouteQuery(fromAndTo);mRouteSearch.calculateWalkRouteAsyn(query);// 異步路徑規劃步行模式查詢}}

基本思路5的實現

/*** 步行路線搜索結果方法回調*/@Overridepublic void onWalkRouteSearched(WalkRouteResult result, int errorCode) {dissmissProgressDialog();aMap.clear();// 清理地圖上的所有覆蓋物if (errorCode == AMapException.CODE_AMAP_SUCCESS) {if (result != null && result.getPaths() != null) {if (result.getPaths().size() > 0) {mWalkRouteResult = result;final WalkPath walkPath = mWalkRouteResult.getPaths().get(0);if(walkPath == null) {return;}WalkRouteOverlay walkRouteOverlay = new WalkRouteOverlay(this, aMap, walkPath,mWalkRouteResult.getStartPos(),mWalkRouteResult.getTargetPos());walkRouteOverlay.removeFromMap();walkRouteOverlay.addToMap();walkRouteOverlay.zoomToSpan();mBottomLayout.setVisibility(View.VISIBLE);int dis = (int) walkPath.getDistance();int dur = (int) walkPath.getDuration();String des = AMapUtil.getFriendlyTime(dur)+"("+AMapUtil.getFriendlyLength(dis)+")";mRotueTimeDes.setText(des);mRouteDetailDes.setVisibility(View.GONE);mBottomLayout.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(mContext,WalkRouteDetailActivity.class);intent.putExtra("walk_path", walkPath);intent.putExtra("walk_result",mWalkRouteResult);startActivity(intent);}});} else if (result != null && result.getPaths() == null) {ToastUtil.show(mContext, R.string.no_result);}} else {ToastUtil.show(mContext, R.string.no_result);}} else {ToastUtil.showerror(this.getApplicationContext(), errorCode);}}

PS:此處只列出重要代碼,其他非重要代碼沒有列出

總結

在重新梳理一遍思路:
1、相關對象的初始化操作
2、獲取地圖并對地圖進行相關設置
3、注冊相關監聽函數
4、開始搜索路徑規劃方案
5、步行路線搜索結果方法回調(4、5可以合在一起,4是自定義的函數)

附上源碼

下載地址

總結

以上是生活随笔為你收集整理的Android开发之高德API篇:2、高德API线路规划的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 性一交一乱一区二区洋洋av | 91在线第一页 | 中文字幕18页 | 91插插插视频 | 黄色的毛片 | 国内偷拍第一页 | av一区二区三区在线 | 91日韩在线 | 国产大片在线观看 | 日本黄色一区二区 | 国产精品久久久久久久久岛 | 亚天堂| 欧美专区亚洲专区 | 伊人久久影院 | 中文字幕乱码一区二区三区 | 成了校长的性脔h文 | 九九资源网 | 亚洲av毛片成人精品 | 青在线视频 | 国产精选在线 | 一区二区三区精彩视频 | 国产96在线 | 亚洲 | 毛片内射久久久一区 | 天天做天天干 | 日韩黄色成人 | 人人草在线 | 天堂国产精品 | 色日韩 | 欧美三级视频在线观看 | 欧美一级黄色片网站 | 超碰午夜 | 火影忍者羞羞漫画 | 欧美另类专区 | 久久大香 | 丰满少妇xbxb毛片日本 | 国产亚洲网站 | 麻豆一区二区三区在线观看 | av免播放器 | 国产欧美精品一区二区三区 | 中国黄色1级片 | 欧美爱爱网 | 国产伦精品一区二区三区免费 | 日韩电影网站 | 一级黄色性生活片 | 韩国电影一区二区三区 | 最新中文在线视频 | 精品国产av色一区二区深夜久久 | 久久久久亚洲av成人网人人软件 | 少妇一边呻吟一边说使劲视频 | 国产视频一区二区视频 | 久久久久久福利 | 欧美18—19性高清hd4k | 激情播播网 | 一区二区三区四区五区av | 国产高清在线视频观看 | 前任攻略在线观看免费完整版 | 一本加勒比北条麻妃 | 成人精品网址 | 国产精品国产三级国产aⅴ无密码 | 97久久人澡人人添人人爽 | 污视频在线观看网址 | 欧美做爰性生交视频 | 欧洲性开放大片 | 超碰97自拍 | 中文字幕国产在线观看 | 国产亚洲精品自拍 | 成人激情视频网站 | 欧美xxxx日本和非洲 | 秘密爱大尺度做爰呻吟 | 国产一区二区三区视频 | 欧美狠狠干 | 丁香久久综合 | 很色的网站 | 国产无套内射普通话对白 | 亚洲欧美久久 | 免费看一级黄色片 | 中文字幕在线观看第一页 | 免费网站av | 精品乱子伦 | 美丽的小蜜桃2:美丽人生 | 99re在线观看| 久久亚洲av无码西西人体 | 日本精品在线 | 中文字幕av免费 | 免费国产成人 | 国产一级片毛片 | 91se在线 | 色就是色欧美色图 | 白石茉莉奈中文字幕在 | 伊人婷婷综合 | 婷婷在线视频观看 | 琪琪色视频 | 欧美黑人三级 | 韩日中文字幕 | 日韩精品观看 | 日韩在观看线 | 一本色道久久加勒比精品 | 自拍偷拍精品视频 | 黑人一级片 |