版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013184970/article/details/84530905
在项目中用到地图的地方往往会有导航功能,那么这一节将介绍一下使用高德地图来实现驾车路线规划的功能。
首先来两张示例图供参考:
接下来还是直接上代码更直观
建立DriverRouteActivity.java主程序类
package com.junto.gdmaptest.routeactivity;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.amap.api.maps.AMap;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.MarkerOptions;
import com.amap.api.services.core.AMapException;
import com.amap.api.services.core.LatLonPoint;
import com.amap.api.services.route.BusRouteResult;
import com.amap.api.services.route.DrivePath;
import com.amap.api.services.route.DriveRouteResult;
import com.amap.api.services.route.RideRouteResult;
import com.amap.api.services.route.RouteSearch;
import com.amap.api.services.route.WalkRouteResult;
import com.junto.gdmaptest.R;
import com.junto.gdmaptest.overlay.DrivingRouteOverlay;
import com.junto.gdmaptest.util.AMapUtil;
/**
* Created by WangJinyong on 2018/10/30.
* 驾车路线规划
*/
public class DriveRouteActivity extends Activity implements RouteSearch.OnRouteSearchListener {
private AMap aMap;
private MapView mapView;
private LatLonPoint mStartPoint = new LatLonPoint(39.942295,116.335891);//起点
private LatLonPoint mEndPoint = new LatLonPoint(39.995576,116.481288);//终点
private RouteSearch mRouteSearch;
private DriveRouteResult mDriveRouteResult;
private final int ROUTE_TYPE_DRIVE = 2;
private ProgressDialog progDialog = null;// 搜索时进度条
private RelativeLayout mBottomLayout;
private TextView mRotueTimeDes, mRouteDetailDes;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_driveroute);
//获取地图控件引用
mapView = findViewById(R.id.route_map);
//在activity执行onCreat时执行mapView.onCreate(savedInstanceState),创建地图,必需要写的
mapView.onCreate(savedInstanceState);
initView();
setfromandtoMarker();
searchRouteResult(ROUTE_TYPE_DRIVE, RouteSearch.DrivingDefault);
}
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mapView.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
private void initView(){
//初始化AMap对象
if (aMap == null) {
aMap = mapView.getMap();
}
mRouteSearch = new RouteSearch(this);
mRouteSearch.setRouteSearchListener(this);
mBottomLayout = findViewById(R.id.bottom_layout);
mRotueTimeDes = findViewById(R.id.firstline);
mRouteDetailDes = findViewById(R.id.secondline);
}
private void setfromandtoMarker() {
aMap.addMarker(new MarkerOptions()
.position(AMapUtil.convertToLatLng(mStartPoint))
.icon(BitmapDescriptorFactory.fromResource(R.mipmap.start)));
aMap.addMarker(new MarkerOptions()
.position(AMapUtil.convertToLatLng(mEndPoint))
.icon(BitmapDescriptorFactory.fromResource(R.mipmap.end)));
}
/**
* 显示进度框
*/
private void showProgressDialog() {
if (progDialog == null)
progDialog = new ProgressDialog(this);
progDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDialog.setIndeterminate(false);
progDialog.setCancelable(true);
progDialog.setMessage("正在搜索");
progDialog.show();
}
/**
* 隐藏进度框
*/
private void dissmissProgressDialog() {
if (progDialog != null) {
progDialog.dismiss();
}
}
/**
* 开始搜索路径规划方案
*/
public void searchRouteResult(int routeType, int mode) {
if (mStartPoint == null) {
Toast.makeText(this,"定位中,稍后再试...",Toast.LENGTH_SHORT).show();
return;
}
if (mEndPoint == null) {
Toast.makeText(this,"终点未设置",Toast.LENGTH_SHORT).show();
}
showProgressDialog();
final RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(
mStartPoint, mEndPoint);
if (routeType == ROUTE_TYPE_DRIVE) {// 驾车路径规划
RouteSearch.DriveRouteQuery query = new RouteSearch.DriveRouteQuery(fromAndTo, mode, null,
null, "");// 第一个参数表示路径规划的起点和终点,第二个参数表示驾车模式,第三个参数表示途经点,第四个参数表示避让区域,第五个参数表示避让道路
mRouteSearch.calculateDriveRouteAsyn(query);// 异步路径规划驾车模式查询
}
}
/**
* 公交路线搜索结果方法回调
*/
@Override
public void onBusRouteSearched(BusRouteResult busRouteResult, int i) {
}
/**
* 驾车路线搜索结果方法回调
*/
@Override
public void onDriveRouteSearched(DriveRouteResult result, int errorCode) {
dissmissProgressDialog();
aMap.clear();// 清理地图上的所有覆盖物
if (errorCode == AMapException.CODE_AMAP_SUCCESS) {
if (result != null && result.getPaths() != null) {
if (result.getPaths().size() > 0) {
mDriveRouteResult = result;
final DrivePath drivePath = mDriveRouteResult.getPaths().get(0);
DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay(
this, aMap, drivePath,
mDriveRouteResult.getStartPos(),
mDriveRouteResult.getTargetPos(), null);
drivingRouteOverlay.setNodeIconVisibility(false);//设置节点marker是否显示
drivingRouteOverlay.setIsColorfulline(true);//是否用颜色展示交通拥堵情况,默认true
drivingRouteOverlay.removeFromMap();
drivingRouteOverlay.addToMap();
drivingRouteOverlay.zoomToSpan();
int dis = (int) drivePath.getDistance();
int dur = (int) drivePath.getDuration();
String des = AMapUtil.getFriendlyTime(dur)+"("+AMapUtil.getFriendlyLength(dis)+")";
mRotueTimeDes.setText(des);
mRouteDetailDes.setVisibility(View.VISIBLE);
int taxiCost = (int) mDriveRouteResult.getTaxiCost();
mRouteDetailDes.setText("打车约"+taxiCost+"元");
mBottomLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(DriveRouteActivity.this,DriveRouteDetailActivity.class);
intent.putExtra("drive_path", drivePath);
intent.putExtra("drive_result",mDriveRouteResult);
startActivity(intent);
}
});
} else if (result != null && result.getPaths() == null) {
Toast.makeText(this,"对不起,没有搜索到相关数据!",Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(this,"对不起,没有搜索到相关数据!",Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(this,errorCode,Toast.LENGTH_SHORT).show();
}
}
/**
* 步行路线搜索结果方法回调
*/
@Override
public void onWalkRouteSearched(WalkRouteResult walkRouteResult, int i) {
}
/**
* 骑行路线搜索结果方法回调
*/
@Override
public void onRideRouteSearched(RideRouteResult rideRouteResult, int i) {
}
}
布局文件activity_driveroute.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/bottom_layout"
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_alignParentBottom="true"
android:padding="5dp"
android:background="@color/gray_lite"
android:gravity="center_vertical"
android:visibility="visible" >
<TextView
android:id="@+id/firstline"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:layout_marginLeft="12dp"
android:singleLine="true"
android:textColor="#333333"
android:textSize="16sp" />
<TextView
android:id="@+id/secondline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/firstline"
android:layout_marginLeft="12dp"
android:gravity="right"
android:singleLine="true"
android:textColor="#999999"
android:textSize="13sp"
android:visibility="visible"/>
<LinearLayout
android:id="@+id/detail"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="详情"
android:textColor="@color/blue"
android:textSize="14sp" />
<Button
android:layout_width="7dp"
android:layout_height="13dp"
android:layout_marginLeft="4dp"
android:background="@mipmap/arrow_right_blue"
android:gravity="center_vertical" />
</LinearLayout>
</RelativeLayout>
<com.amap.api.maps.MapView
android:id="@+id/route_map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/bottom_layout" >
</com.amap.api.maps.MapView>
</RelativeLayout>
跳转到路线详情页的类DriveRouteDetailActivity.java
package com.junto.gdmaptest.routeactivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
import com.amap.api.services.route.DrivePath;
import com.amap.api.services.route.DriveRouteResult;
import com.amap.api.services.route.DriveStep;
import com.amap.api.services.route.TMC;
import com.junto.gdmaptest.R;
import com.junto.gdmaptest.util.AMapUtil;
import java.util.List;
/**
* Created by WangJinyong on 2018/10/31.
* 公交路线详情
*/
public class DriveRouteDetailActivity extends Activity {
private DrivePath mDrivePath;
private DriveRouteResult mDriveRouteResult;
private TextView mTitle, mTitleDriveRoute, mDesDriveRoute;
private ListView mDriveSegmentList;
private DriveSegmentListAdapter mDriveSegmentListAdapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_driveroutedetail);
getIntentData();
init();
}
private void getIntentData() {
Intent intent = getIntent();
if (intent == null) {
return;
}
mDrivePath = intent.getParcelableExtra("drive_path");
mDriveRouteResult = intent.getParcelableExtra("drive_result");
}
private void init() {
mTitle = findViewById(R.id.title_center);
mTitleDriveRoute = findViewById(R.id.firstline);
mDesDriveRoute = findViewById(R.id.secondline);
mTitle.setText("驾车路线详情");
String dur = AMapUtil.getFriendlyTime((int) mDrivePath.getDuration());
String dis = AMapUtil.getFriendlyLength((int) mDrivePath.getDistance());
mTitleDriveRoute.setText(dur + "(" + dis + ")");
int taxiCost = (int) mDriveRouteResult.getTaxiCost();
mDesDriveRoute.setText("打车约"+taxiCost+"元");
mDesDriveRoute.setVisibility(View.VISIBLE);
configureListView();
}
private void configureListView() {
mDriveSegmentList = findViewById(R.id.bus_segment_list);
mDriveSegmentListAdapter = new DriveSegmentListAdapter(
this.getApplicationContext(), mDrivePath.getSteps());
mDriveSegmentList.setAdapter(mDriveSegmentListAdapter);
}
public void onBackClick(View view) {
this.finish();
}
}
详情页的布局文件:activity_driveroutedetail.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/act_background"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/route_title"
android:layout_width="match_parent"
android:layout_height="44dp">
<LinearLayout
android:id="@+id/title_back"
android:layout_width="70dp"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:descendantFocusability="beforeDescendants"
android:gravity="center_vertical"
android:onClick="onBackClick"
android:orientation="vertical"
android:paddingLeft="5dp"
android:paddingStart="5dp">
<ImageView
android:layout_width="30dp"
android:layout_height="match_parent"
android:clickable="false"
android:scaleType="center"
android:src="@mipmap/back" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/title_center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textColor="@color/black"
android:textSize="15sp"
android:textStyle="bold" />
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:id="@+id/bus_path"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="70dp"
android:background="@color/phone_bg"
android:gravity="center_vertical"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:id="@+id/firstline"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:layout_marginLeft="12dp"
android:singleLine="true"
android:textColor="#333333"
android:textSize="16sp" />
<TextView
android:id="@+id/secondline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/firstline"
android:layout_marginLeft="12dp"
android:gravity="right"
android:singleLine="true"
android:textColor="#999999"
android:textSize="13sp"
android:visibility="gone" />
</LinearLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#e0e0e0" />
<ListView
android:id="@+id/bus_segment_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:cacheColorHint="@color/transparent"
android:divider="@color/transparent"
android:fadingEdge="none"
android:fadingEdgeLength="0dp"
android:footerDividersEnabled="false"
android:headerDividersEnabled="false"
android:listSelector="@color/transparent"></ListView>
</LinearLayout>
</LinearLayout>
详情页用到了列表,列表的Adapter
package com.junto.gdmaptest.routeactivity;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.amap.api.services.route.DriveStep;
import com.junto.gdmaptest.R;
import com.junto.gdmaptest.util.AMapUtil;
import java.util.ArrayList;
import java.util.List;
/**
* 驾车路线详情页adapter
* @author ligen
*/
public class DriveSegmentListAdapter extends BaseAdapter {
private Context mContext;
private List<DriveStep> mItemList = new ArrayList<DriveStep>();
public DriveSegmentListAdapter(Context context, List<DriveStep> list) {
this.mContext = context;
mItemList.add(new DriveStep());
for (DriveStep driveStep : list) {
mItemList.add(driveStep);
}
mItemList.add(new DriveStep());
}
@Override
public int getCount() {
return mItemList.size();
}
@Override
public Object getItem(int position) {
return mItemList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = View.inflate(mContext, R.layout.item_bus_segment, null);
holder.driveDirIcon = convertView.findViewById(R.id.bus_dir_icon);
holder.driveLineName = convertView.findViewById(R.id.bus_line_name);
holder.driveDirUp = convertView.findViewById(R.id.bus_dir_icon_up);
holder.driveDirDown = convertView.findViewById(R.id.bus_dir_icon_down);
holder.splitLine = convertView.findViewById(R.id.bus_seg_split_line);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final DriveStep item = mItemList.get(position);
if (position == 0) {
holder.driveDirIcon.setImageResource(R.mipmap.dir_start);
holder.driveLineName.setText("出发");
holder.driveDirUp.setVisibility(View.GONE);
holder.driveDirDown.setVisibility(View.VISIBLE);
holder.splitLine.setVisibility(View.GONE);
return convertView;
} else if (position == mItemList.size() - 1) {
holder.driveDirIcon.setImageResource(R.mipmap.dir_end);
holder.driveLineName.setText("到达终点");
holder.driveDirUp.setVisibility(View.VISIBLE);
holder.driveDirDown.setVisibility(View.GONE);
holder.splitLine.setVisibility(View.VISIBLE);
return convertView;
} else {
String actionName = item.getAction();
int resID = AMapUtil.getDriveActionID(actionName);
holder.driveDirIcon.setImageResource(resID);
holder.driveLineName.setText(item.getInstruction());
holder.driveDirUp.setVisibility(View.VISIBLE);
holder.driveDirDown.setVisibility(View.VISIBLE);
holder.splitLine.setVisibility(View.VISIBLE);
return convertView;
}
}
private class ViewHolder {
TextView driveLineName;
ImageView driveDirIcon;
ImageView driveDirUp;
ImageView driveDirDown;
ImageView splitLine;
}
}
列表的行布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white" >
<ImageView
android:id="@+id/bus_seg_split_line"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginLeft="50dp"
android:layout_marginStart="50dp"
android:background="#e0e0e0"/>
<RelativeLayout
android:id="@+id/bus_route_direction"
android:layout_width="wrap_content"
android:layout_height="44dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="11dp"
android:layout_marginStart="11dp" >
<ImageView
android:id="@+id/bus_dir_icon"
android:layout_width="22dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:src="@mipmap/dir_start" />
<ImageView
android:id="@+id/bus_dir_icon_up"
android:layout_width="2dp"
android:layout_height="match_parent"
android:layout_above="@id/bus_dir_icon"
android:layout_centerHorizontal="true"
android:background="#b6b6b6"
android:visibility="gone"/>
<ImageView
android:id="@+id/bus_dir_icon_down"
android:layout_width="2dp"
android:layout_height="match_parent"
android:layout_below="@id/bus_dir_icon"
android:layout_centerHorizontal="true"
android:background="#b6b6b6"
android:visibility="gone"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/bus_item"
android:layout_width="match_parent"
android:layout_height="44dp" >
<RelativeLayout
android:id="@+id/stationinfo"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true">
<ImageView
android:id="@+id/bus_expand_image"
android:layout_width="25dp"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginEnd="6dp"
android:layout_marginRight="6dp"
android:clickable="true"
android:scaleType="centerInside"
android:src="@mipmap/down"
android:visibility="gone" />
<TextView
android:id="@+id/bus_station_num"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_toLeftOf="@id/bus_expand_image"
android:layout_toStartOf="@id/bus_expand_image"
android:gravity="center_vertical"
android:textColor="@color/blue"
android:textSize="12sp"
android:visibility="gone" >
</TextView>
</RelativeLayout>
<TextView
android:id="@+id/bus_line_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="50dp"
android:layout_marginStart="50dp"
android:layout_marginRight="70dp"
android:layout_marginEnd="70dp"
android:textColor="#333333"
android:text="出发"
android:textSize="14sp" />
</RelativeLayout>
<LinearLayout
android:id="@+id/expand_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/bus_item"
android:orientation="vertical">
</LinearLayout>
</RelativeLayout>
以上内容即为两点间的驾车路线规划以及路线详情。
扫描二维码关注公众号,回复:
4245719 查看本文章
出行路线规划还有公交路线规划、步行路线规划、骑行路线规划,实现这些功能都是要实现RouteSearch.OnRouteSearchListener接口,在对应的回调方法里实现功能就行了
/**
* 公交路线搜索结果方法回调
*/
@Override
public void onBusRouteSearched(BusRouteResult busRouteResult, int i) {
dissmissProgressDialog();
aMap.clear();// 清理地图上的所有覆盖物
if (errorCode == AMapException.CODE_AMAP_SUCCESS) {
if (result != null && result.getPaths() != null) {
if (result.getPaths().size() > 0) {
mBusRouteResult = result;
BusResultListAdapter mBusResultListAdapter = new BusResultListAdapter(mContext, mBusRouteResult);
mBusResultList.setAdapter(mBusResultListAdapter);
} 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);
}
}
/**
* 步行路线搜索结果方法回调
*/
@Override
public void onWalkRouteSearched(WalkRouteResult walkRouteResult, int i) {
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);
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() {
@Override
public 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);
}
}
/**
* 骑行路线搜索结果方法回调
*/
@Override
public void onRideRouteSearched(RideRouteResult rideRouteResult, int i) {
dissmissProgressDialog();
aMap.clear();// 清理地图上的所有覆盖物
if (errorCode == AMapException.CODE_AMAP_SUCCESS) {
if (result != null && result.getPaths() != null) {
if (result.getPaths().size() > 0) {
mRideRouteResult = result;
final RidePath ridePath = mRideRouteResult.getPaths()
.get(0);
RideRouteOverlay rideRouteOverlay = new RideRouteOverlay(
this, aMap, ridePath,
mRideRouteResult.getStartPos(),
mRideRouteResult.getTargetPos());
rideRouteOverlay.removeFromMap();
rideRouteOverlay.addToMap();
rideRouteOverlay.zoomToSpan();
mBottomLayout.setVisibility(View.VISIBLE);
int dis = (int) ridePath.getDistance();
int dur = (int) ridePath.getDuration();
String des = AMapUtil.getFriendlyTime(dur)+"("+AMapUtil.getFriendlyLength(dis)+")";
mRotueTimeDes.setText(des);
mRouteDetailDes.setVisibility(View.GONE);
mBottomLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext,
RideRouteDetailActivity.class);
intent.putExtra("ride_path", ridePath);
intent.putExtra("ride_result",
mRideRouteResult);
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);
}
}
本节实现了路线规划功能,下一节我们再来实现路线导航功能。