添加权限:

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
 
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />

添加Key

<meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="cb6b5956ba18c602e4b8b51c1fee943d" />

<--------------------------------------------------------------第一个类-------------------------------------------------------------->

package com.amap.map3d.demo.route;

import java.util.List;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;

import com.amap.api.maps.AMap;
import com.amap.api.maps.AMap.InfoWindowAdapter;
import com.amap.api.maps.AMap.OnInfoWindowClickListener;
import com.amap.api.maps.AMap.OnMapClickListener;
import com.amap.api.maps.AMap.OnMarkerClickListener;
import com.amap.api.maps.MapView;
import com.amap.api.maps.MapsInitializer;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MarkerOptions;
import com.amap.api.maps.overlay.BusRouteOverlay;
import com.amap.api.maps.overlay.DrivingRouteOverlay;
import com.amap.api.maps.overlay.WalkRouteOverlay;
import com.amap.api.services.core.LatLonPoint;
import com.amap.api.services.core.PoiItem;
import com.amap.api.services.poisearch.PoiItemDetail;
import com.amap.api.services.poisearch.PoiResult;
import com.amap.api.services.poisearch.PoiSearch;
import com.amap.api.services.poisearch.PoiSearch.OnPoiSearchListener;
import com.amap.api.services.route.BusPath;
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.RouteSearch;
import com.amap.api.services.route.RouteSearch.BusRouteQuery;
import com.amap.api.services.route.RouteSearch.DriveRouteQuery;
import com.amap.api.services.route.RouteSearch.OnRouteSearchListener;
import com.amap.api.services.route.RouteSearch.WalkRouteQuery;
import com.amap.api.services.route.WalkPath;
import com.amap.api.services.route.WalkRouteResult;
import com.amap.map3d.demo.route.RouteSearchPoiDialog.OnListItemClick;
import com.amap.map3d.demo.util.AMapUtil;
import com.amap.map3d.demo.util.OffLineMapUtils;
import com.amap.map3d.demo.util.ToastUtil;
import com.example.map_demo02.R;

/**
 * AMapV2地图中简单介绍route搜索
 */
public class RouteActivity extends Activity implements OnMarkerClickListener,
        OnMapClickListener, OnInfoWindowClickListener, InfoWindowAdapter,
        OnPoiSearchListener, OnRouteSearchListener, OnClickListener {
    private AMap aMap;
    private MapView mapView;
    private Button drivingButton;
    private Button busButton;
    private Button walkButton;

private ImageButton startImageButton;
    private ImageButton endImageButton;
    private ImageButton routeSearchImagebtn;

private EditText startTextView;
    private EditText endTextView;
    private ProgressDialog progDialog = null;// 搜索时进度条
    private int busMode = RouteSearch.BusDefault;// 公交默认模式
    private int drivingMode = RouteSearch.DrivingDefault;// 驾车默认模式
    private int walkMode = RouteSearch.WalkDefault;// 步行默认模式
    private BusRouteResult busRouteResult;// 公交模式查询结果
    private DriveRouteResult driveRouteResult;// 驾车模式查询结果
    private WalkRouteResult walkRouteResult;// 步行模式查询结果
    private int routeType = 1;// 1代表公交模式,2代表驾车模式,3代表步行模式
    private String strStart;
    private String strEnd;
    private LatLonPoint startPoint = null;
    private LatLonPoint endPoint = null;
    private PoiSearch.Query startSearchQuery;
    private PoiSearch.Query endSearchQuery;

private boolean isClickStart = false;
    private boolean isClickTarget = false;
    private Marker startMk, targetMk;
    private RouteSearch routeSearch;
    public ArrayAdapter<String> aAdapter;

@Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.route_activity);
        /*
         * 设置离线地图存储目录,在下载离线地图或初始化地图设置;
         * 使用过程中可自行设置, 若自行设置了离线地图存储的路径,
         * 则需要在离线地图下载和使用地图页面都进行路径设置
         * */
        //Demo中为了其他界面可以使用下载的离线地图,使用默认位置存储,屏蔽了自定义设置
        MapsInitializer.sdcardDir =OffLineMapUtils.getSdCacheDir(this);
        mapView = (MapView) findViewById(R.id.map);
        mapView.onCreate(bundle);// 此方法必须重写
        init();
    }

/**
     * 初始化AMap对象
     */
    private void init() {
        if (aMap == null) {
            aMap = mapView.getMap();
            registerListener();
        }
        routeSearch = new RouteSearch(this);
        routeSearch.setRouteSearchListener(this);
        startTextView = (EditText) findViewById(R.id.autotextview_roadsearch_start);
        endTextView = (EditText) findViewById(R.id.autotextview_roadsearch_goals);
        busButton = (Button) findViewById(R.id.imagebtn_roadsearch_tab_transit);
        busButton.setOnClickListener(this);
        drivingButton = (Button) findViewById(R.id.imagebtn_roadsearch_tab_driving);
        drivingButton.setOnClickListener(this);
        walkButton = (Button) findViewById(R.id.imagebtn_roadsearch_tab_walk);
        walkButton.setOnClickListener(this);
        startImageButton = (ImageButton) findViewById(R.id.imagebtn_roadsearch_startoption);
        startImageButton.setOnClickListener(this);
        endImageButton = (ImageButton) findViewById(R.id.imagebtn_roadsearch_endoption);
        endImageButton.setOnClickListener(this);
        routeSearchImagebtn = (ImageButton) findViewById(R.id.imagebtn_roadsearch_search);
        routeSearchImagebtn.setOnClickListener(this);
    }

/**
     * 方法必须重写
     */
    @Override
    protected void onResume() {
        super.onResume();
        mapView.onResume();
    }

/**
     * 方法必须重写
     */
    @Override
    protected void onPause() {
        super.onPause();
        mapView.onPause();
    }

/**
     * 方法必须重写
     */
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        mapView.onSaveInstanceState(outState);
    }

/**
     * 方法必须重写
     */
    @Override
    protected void onDestroy() {
        super.onDestroy();
        mapView.onDestroy();
    }

/**
     * 选择公交模式
     */
    private void busRoute() {
        routeType = 1;// 标识为公交模式
        busMode = RouteSearch.BusDefault;
        drivingButton.setBackgroundResource(R.drawable.mode_driving_off);
        busButton.setBackgroundResource(R.drawable.mode_transit_on);
        walkButton.setBackgroundResource(R.drawable.mode_walk_off);

}

/**
     * 选择驾车模式
     */
    private void drivingRoute() {
        routeType = 2;// 标识为驾车模式
        drivingButton.setBackgroundResource(R.drawable.mode_driving_on);
        busButton.setBackgroundResource(R.drawable.mode_transit_off);
        walkButton.setBackgroundResource(R.drawable.mode_walk_off);
    }

/**
     * 选择步行模式
     */
    private void walkRoute() {
        routeType = 3;// 标识为步行模式
        walkMode = RouteSearch.WalkMultipath;
        drivingButton.setBackgroundResource(R.drawable.mode_driving_off);
        busButton.setBackgroundResource(R.drawable.mode_transit_off);
        walkButton.setBackgroundResource(R.drawable.mode_walk_on);
    }

/**
     * 在地图上选取起点
     */
    private void startImagePoint() {
        ToastUtil.show(RouteActivity.this, "在地图上点击您的起点");
        isClickStart = true;
        isClickTarget = false;
        registerListener();
    }

/**
     * 在地图上选取终点
     */
    private void endImagePoint() {
        ToastUtil.show(RouteActivity.this, "在地图上点击您的终点");
        isClickTarget = true;
        isClickStart = false;
        registerListener();
    }

/**
     * 点击搜索按钮开始Route搜索
     */
    public void searchRoute() {
        strStart = startTextView.getText().toString().trim();
        strEnd = endTextView.getText().toString().trim();
        if (strStart == null || strStart.length() == 0) {
            ToastUtil.show(RouteActivity.this, "请选择起点");
            return;
        }
        if (strEnd == null || strEnd.length() == 0) {
            ToastUtil.show(RouteActivity.this, "请选择终点");
            return;
        }
        if (strStart.equals(strEnd)) {
            ToastUtil.show(RouteActivity.this, "起点与终点距离很近,您可以步行前往");
            return;
        }

startSearchResult();// 开始搜终点
    }

@Override
    public void onInfoWindowClick(Marker marker) {
        isClickStart = false;
        isClickTarget = false;
        if (marker.equals(startMk)) {
            startTextView.setText("地图上的起点");
            startPoint = AMapUtil.convertToLatLonPoint(startMk.getPosition());
            startMk.hideInfoWindow();
            startMk.remove();
        } else if (marker.equals(targetMk)) {
            endTextView.setText("地图上的终点");
            endPoint = AMapUtil.convertToLatLonPoint(targetMk.getPosition());
            targetMk.hideInfoWindow();
            targetMk.remove();
        }
    }

@Override
    public boolean onMarkerClick(Marker marker) {
        if (marker.isInfoWindowShown()) {
            marker.hideInfoWindow();
        } else {
            marker.showInfoWindow();
        }
        return false;
    }

@Override
    public void onMapClick(LatLng latng) {
        if (isClickStart) {
            startMk = aMap.addMarker(new MarkerOptions()
                    .anchor(0.5f, 1)
                    .icon(BitmapDescriptorFactory
                            .fromResource(R.drawable.point)).position(latng)
                    .title("点击选择为起点"));
            startMk.showInfoWindow();
        } else if (isClickTarget) {
            targetMk = aMap.addMarker(new MarkerOptions()
                    .anchor(0.5f, 1)
                    .icon(BitmapDescriptorFactory
                            .fromResource(R.drawable.point)).position(latng)
                    .title("点击选择为目的地"));
            targetMk.showInfoWindow();
        }
    }

@Override
    public View getInfoContents(Marker marker) {
        return null;
    }

@Override
    public View getInfoWindow(Marker marker) {
        return null;
    }

/**
     * 注册监听
     */
    private void registerListener() {
        aMap.setOnMapClickListener(RouteActivity.this);
        aMap.setOnMarkerClickListener(RouteActivity.this);
        aMap.setOnInfoWindowClickListener(RouteActivity.this);
        aMap.setInfoWindowAdapter(RouteActivity.this);
    }

/**
     * 显示进度框
     */
    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 startSearchResult() {
        strStart = startTextView.getText().toString().trim();
        if (startPoint != null && strStart.equals("地图上的起点")) {
            endSearchResult();
        } else {
            showProgressDialog();
            startSearchQuery = new PoiSearch.Query(strStart, "", "010"); // 第一个参数表示查询关键字,第二参数表示poi搜索类型,第三个参数表示城市区号或者城市名
            startSearchQuery.setPageNum(0);// 设置查询第几页,第一页从0开始
            startSearchQuery.setPageSize(20);// 设置每页返回多少条数据
            PoiSearch poiSearch = new PoiSearch(RouteActivity.this,
                    startSearchQuery);
            poiSearch.setOnPoiSearchListener(this);
            poiSearch.searchPOIAsyn();// 异步poi查询
        }
    }

/**
     * 查询路径规划终点
     */
    public void endSearchResult() {
        strEnd = endTextView.getText().toString().trim();
        if (endPoint != null && strEnd.equals("地图上的终点")) {
            searchRouteResult(startPoint, endPoint);
        } else {
            showProgressDialog();
            endSearchQuery = new PoiSearch.Query(strEnd, "", "010"); // 第一个参数表示查询关键字,第二参数表示poi搜索类型,第三个参数表示城市区号或者城市名
            endSearchQuery.setPageNum(0);// 设置查询第几页,第一页从0开始
            endSearchQuery.setPageSize(20);// 设置每页返回多少条数据

PoiSearch poiSearch = new PoiSearch(RouteActivity.this,
                    endSearchQuery);
            poiSearch.setOnPoiSearchListener(this);
            poiSearch.searchPOIAsyn(); // 异步poi查询
        }
    }

/**
     * 开始搜索路径规划方案
     */
    public void searchRouteResult(LatLonPoint startPoint, LatLonPoint endPoint) {
        showProgressDialog();
        final RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(
                startPoint, endPoint);
        if (routeType == 1) {// 公交路径规划
            BusRouteQuery query = new BusRouteQuery(fromAndTo, busMode, "北京", 0);// 第一个参数表示路径规划的起点和终点,第二个参数表示公交查询模式,第三个参数表示公交查询城市区号,第四个参数表示是否计算夜班车,0表示不计算
            routeSearch.calculateBusRouteAsyn(query);// 异步路径规划公交模式查询
        } else if (routeType == 2) {// 驾车路径规划
            DriveRouteQuery query = new DriveRouteQuery(fromAndTo, drivingMode,
                    null, null, "");// 第一个参数表示路径规划的起点和终点,第二个参数表示驾车模式,第三个参数表示途经点,第四个参数表示避让区域,第五个参数表示避让道路
            routeSearch.calculateDriveRouteAsyn(query);// 异步路径规划驾车模式查询
        } else if (routeType == 3) {// 步行路径规划
            WalkRouteQuery query = new WalkRouteQuery(fromAndTo, walkMode);
            routeSearch.calculateWalkRouteAsyn(query);// 异步路径规划步行模式查询
        }
    }

@Override
    public void onPoiItemDetailSearched(PoiItemDetail arg0, int arg1) {

}

/**
     * POI搜索结果回调
     */
    @Override
    public void onPoiSearched(PoiResult result, int rCode) {
        dissmissProgressDialog();
        if (rCode == 0) {// 返回成功
            if (result != null && result.getQuery() != null
                    && result.getPois() != null && result.getPois().size() > 0) {// 搜索poi的结果
                if (result.getQuery().equals(startSearchQuery)) {
                    List<PoiItem> poiItems = result.getPois();// 取得poiitem数据
                    RouteSearchPoiDialog dialog = new RouteSearchPoiDialog(
                            RouteActivity.this, poiItems);
                    dialog.setTitle("您要找的起点是:");
                    dialog.show();
                    dialog.setOnListClickListener(new OnListItemClick() {
                        @Override
                        public void onListItemClick(
                                RouteSearchPoiDialog dialog,
                                PoiItem startpoiItem) {
                            startPoint = startpoiItem.getLatLonPoint();
                            strStart = startpoiItem.getTitle();
                            startTextView.setText(strStart);
                            endSearchResult();// 开始搜终点
                        }

});
                } else if (result.getQuery().equals(endSearchQuery)) {
                    List<PoiItem> poiItems = result.getPois();// 取得poiitem数据
                    RouteSearchPoiDialog dialog = new RouteSearchPoiDialog(
                            RouteActivity.this, poiItems);
                    dialog.setTitle("您要找的终点是:");
                    dialog.show();
                    dialog.setOnListClickListener(new OnListItemClick() {
                        @Override
                        public void onListItemClick(
                                RouteSearchPoiDialog dialog, PoiItem endpoiItem) {
                            endPoint = endpoiItem.getLatLonPoint();
                            strEnd = endpoiItem.getTitle();
                            endTextView.setText(strEnd);
                            searchRouteResult(startPoint, endPoint);// 进行路径规划搜索
                        }

});
                }
            } else {
                ToastUtil.show(RouteActivity.this, R.string.no_result);
            }
        } else if (rCode == 27) {
            ToastUtil.show(RouteActivity.this, R.string.error_network);
        } else if (rCode == 32) {
            ToastUtil.show(RouteActivity.this, R.string.error_key);
        } else {
            ToastUtil.show(RouteActivity.this, getString(R.string.error_other)
                    + rCode);
        }
    }

/**
     * 公交路线查询回调
     */
    @Override
    public void onBusRouteSearched(BusRouteResult result, int rCode) {
        dissmissProgressDialog();
        if (rCode == 0) {
            if (result != null && result.getPaths() != null
                    && result.getPaths().size() > 0) {
                busRouteResult = result;
                BusPath busPath = busRouteResult.getPaths().get(0);
                aMap.clear();// 清理地图上的所有覆盖物
                BusRouteOverlay routeOverlay = new BusRouteOverlay(this, aMap,
                        busPath, busRouteResult.getStartPos(),
                        busRouteResult.getTargetPos());
                routeOverlay.removeFromMap();
                routeOverlay.addToMap();
                routeOverlay.zoomToSpan();
            } else {
                ToastUtil.show(RouteActivity.this, R.string.no_result);
            }
        } else if (rCode == 27) {
            ToastUtil.show(RouteActivity.this, R.string.error_network);
        } else if (rCode == 32) {
            ToastUtil.show(RouteActivity.this, R.string.error_key);
        } else {
            ToastUtil.show(RouteActivity.this, getString(R.string.error_other)
                    + rCode);
        }
    }

/**
     * 驾车结果回调
     */
    @Override
    public void onDriveRouteSearched(DriveRouteResult result, int rCode) {
        dissmissProgressDialog();
        if (rCode == 0) {
            if (result != null && result.getPaths() != null
                    && result.getPaths().size() > 0) {
                driveRouteResult = result;
                DrivePath drivePath = driveRouteResult.getPaths().get(0);
                aMap.clear();// 清理地图上的所有覆盖物
                DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay(
                        this, aMap, drivePath, driveRouteResult.getStartPos(),
                        driveRouteResult.getTargetPos());
                drivingRouteOverlay.removeFromMap();
                drivingRouteOverlay.addToMap();
                drivingRouteOverlay.zoomToSpan();
            } else {
                ToastUtil.show(RouteActivity.this, R.string.no_result);
            }
        } else if (rCode == 27) {
            ToastUtil.show(RouteActivity.this, R.string.error_network);
        } else if (rCode == 32) {
            ToastUtil.show(RouteActivity.this, R.string.error_key);
        } else {
            ToastUtil.show(RouteActivity.this, getString(R.string.error_other)
                    + rCode);
        }
    }

/**
     * 步行路线结果回调
     */
    @Override
    public void onWalkRouteSearched(WalkRouteResult result, int rCode) {
        dissmissProgressDialog();
        if (rCode == 0) {
            if (result != null && result.getPaths() != null
                    && result.getPaths().size() > 0) {
                walkRouteResult = result;
                WalkPath walkPath = walkRouteResult.getPaths().get(0);
                aMap.clear();// 清理地图上的所有覆盖物
                WalkRouteOverlay walkRouteOverlay = new WalkRouteOverlay(this,
                        aMap, walkPath, walkRouteResult.getStartPos(),
                        walkRouteResult.getTargetPos());
                walkRouteOverlay.removeFromMap();
                walkRouteOverlay.addToMap();
                walkRouteOverlay.zoomToSpan();
            } else {
                ToastUtil.show(RouteActivity.this, R.string.no_result);
            }
        } else if (rCode == 27) {
            ToastUtil.show(RouteActivity.this, R.string.error_network);
        } else if (rCode == 32) {
            ToastUtil.show(RouteActivity.this, R.string.error_key);
        } else {
            ToastUtil.show(RouteActivity.this, getString(R.string.error_other)
                    + rCode);
        }
    }

@Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.imagebtn_roadsearch_startoption:
            startImagePoint();
            break;
        case R.id.imagebtn_roadsearch_endoption:
            endImagePoint();
            break;
        case R.id.imagebtn_roadsearch_tab_transit:
            busRoute();
            break;
        case R.id.imagebtn_roadsearch_tab_driving:
            drivingRoute();
            break;
        case R.id.imagebtn_roadsearch_tab_walk:
            walkRoute();
            break;
        case R.id.imagebtn_roadsearch_search:
            searchRoute();
            break;
        default:
            break;
        }
    }
}
<--------------------------------------------------------------第二个类-------------------------------------------------------------->

package com.amap.map3d.demo.route;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.amap.api.services.core.PoiItem;
import com.example.map_demo02.R;

public class RouteSearchAdapter extends BaseAdapter {
    private Context context;
    private List<PoiItem> poiItems = null;
    private LayoutInflater mInflater;

public RouteSearchAdapter(Context context, List<PoiItem> poiItems) {
        this.context = context;
        this.poiItems = poiItems;
        mInflater = LayoutInflater.from(context);
    }

@Override
    public int getCount() {
        return poiItems.size();
    }

@Override
    public Object getItem(int position) {
        return position;
    }

@Override
    public long getItemId(int position) {
        return position;
    }

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.poi_result_list, null);
        }

TextView PoiName = ((TextView) convertView.findViewById(R.id.poiName));
        TextView poiAddress = (TextView) convertView
                .findViewById(R.id.poiAddress);
        PoiName.setText(poiItems.get(position).getTitle());
        String address = null;
        if (poiItems.get(position).getSnippet() != null) {
            address = poiItems.get(position).getSnippet();
        } else {
            address = "中国";
        }
        poiAddress.setText("地址:" + address);
        return convertView;
    }

}

<--------------------------------------------------------------第三个类-------------------------------------------------------------->

package com.amap.map3d.demo.route;

import java.util.List;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ListView;

import com.amap.api.services.core.PoiItem;
import com.example.map_demo02.R;

public class RouteSearchPoiDialog extends Dialog implements
        OnItemClickListener, OnItemSelectedListener {

private List<PoiItem> poiItems;
    private Context context;
    private RouteSearchAdapter adapter;
    protected OnListItemClick mOnClickListener;

public RouteSearchPoiDialog(Context context) {
        this(context, android.R.style.Theme_Dialog);
    }

public RouteSearchPoiDialog(Context context, int theme) {
        super(context, theme);
    }

public RouteSearchPoiDialog(Context context, List<PoiItem> poiItems) {
        this(context, android.R.style.Theme_Dialog);
        this.poiItems = poiItems;
        this.context = context;
        adapter = new RouteSearchAdapter(context, poiItems);
    }

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.routesearch_list_poi);
        ListView listView = (ListView) findViewById(R.id.ListView_nav_search_list_poi);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new OnItemClickListener() {

@Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                dismiss();
                mOnClickListener.onListItemClick(RouteSearchPoiDialog.this,
                        poiItems.get(position));
            }
        });

}

@Override
    public void onItemClick(AdapterView<?> view, View view1, int arg2, long arg3) {
    }

@Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
    }

@Override
    public void onNothingSelected(AdapterView<?> arg0) {

}

public interface OnListItemClick {
        public void onListItemClick(RouteSearchPoiDialog dialog, PoiItem item);
    }

public void setOnListClickListener(OnListItemClick l) {
        mOnClickListener = l;
    }
}

<----------------------------------------------------------------------工具类-------------------------------------------------------------------------------->

/**
 *
 */
package com.amap.map3d.demo.util;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import android.text.Html;
import android.text.Spanned;
import android.widget.EditText;

import com.amap.api.maps.model.LatLng;
import com.amap.api.services.core.LatLonPoint;

public class AMapUtil {
    /**
     * 判断edittext是否null
     */
    public static String checkEditText(EditText editText) {
        if (editText != null && editText.getText() != null
                && !(editText.getText().toString().trim().equals(""))) {
            return editText.getText().toString().trim();
        } else {
            return "";
        }
    }

public static Spanned stringToSpan(String src) {
        return src == null ? null : Html.fromHtml(src.replace("\n", "<br />"));
    }

public static String colorFont(String src, String color) {
        StringBuffer strBuf = new StringBuffer();

strBuf.append("<font color=").append(color).append(">").append(src)
                .append("</font>");
        return strBuf.toString();
    }

public static String makeHtmlNewLine() {
        return "<br />";
    }

public static String makeHtmlSpace(int number) {
        final String space = "&nbsp;";
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < number; i++) {
            result.append(space);
        }
        return result.toString();
    }

public static String getFriendlyLength(int lenMeter) {
        if (lenMeter > 10000) // 10 km
        {
            int dis = lenMeter / 1000;
            return dis + ChString.Kilometer;
        }

if (lenMeter > 1000) {
            float dis = (float) lenMeter / 1000;
            DecimalFormat fnum = new DecimalFormat("##0.0");
            String dstr = fnum.format(dis);
            return dstr + ChString.Kilometer;
        }

if (lenMeter > 100) {
            int dis = lenMeter / 50 * 50;
            return dis + ChString.Meter;
        }

int dis = lenMeter / 10 * 10;
        if (dis == 0) {
            dis = 10;
        }

return dis + ChString.Meter;
    }

public static boolean IsEmptyOrNullString(String s) {
        return (s == null) || (s.trim().length() == 0);
    }

/**
     * 把LatLng对象转化为LatLonPoint对象
     */
    public static LatLonPoint convertToLatLonPoint(LatLng latlon) {
        return new LatLonPoint(latlon.latitude, latlon.longitude);
    }

/**
     * 把LatLonPoint对象转化为LatLon对象
     */
    public static LatLng convertToLatLng(LatLonPoint latLonPoint) {
        return new LatLng(latLonPoint.getLatitude(), latLonPoint.getLongitude());
    }

/**
     * 把集合体的LatLonPoint转化为集合体的LatLng
     */
    public static ArrayList<LatLng> convertArrList(List<LatLonPoint> shapes) {
        ArrayList<LatLng> lineShapes = new ArrayList<LatLng>();
        for (LatLonPoint point : shapes) {
            LatLng latLngTemp = AMapUtil.convertToLatLng(point);
            lineShapes.add(latLngTemp);
        }
        return lineShapes;
    }

/**
     * long类型时间格式化
     */
    public static String convertToTime(long time) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date(time);
        return df.format(date);
    }

public static final String HtmlBlack = "#000000";
    public static final String HtmlGray = "#808080";
}

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

package com.amap.map3d.demo.util;

public class ChString {
    public static final String Kilometer = "\u516c\u91cc";// "公里";
    public static final String Meter = "\u7c73";// "米";
    public static final String ByFoot = "\u6b65\u884c";// "步行";
    public static final String To = "\u53bb\u5f80";// "去往";
    public static final String Station = "\u8f66\u7ad9";// "车站";
    public static final String TargetPlace = "\u76ee\u7684\u5730";// "目的地";
    public static final String StartPlace = "\u51fa\u53d1\u5730";// "出发地";
    public static final String About = "\u5927\u7ea6";// "大约";
    public static final String Direction = "\u65b9\u5411";// "方向";

public static final String GetOn = "\u4e0a\u8f66";// "上车";
    public static final String GetOff = "\u4e0b\u8f66";// "下车";
    public static final String Zhan = "\u7ad9";// "站";

public static final String cross = "\u4ea4\u53c9\u8def\u53e3"; // 交叉路口
    public static final String type = "\u7c7b\u522b"; // 类别
    public static final String address = "\u5730\u5740"; // 地址
    public static final String PrevStep = "\u4e0a\u4e00\u6b65";
    public static final String NextStep = "\u4e0b\u4e00\u6b65";
    public static final String Gong = "\u516c\u4ea4";
    public static final String ByBus = "\u4e58\u8f66";
    public static final String Arrive = "\u5230\u8FBE";// 到达
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

package com.amap.map3d.demo.util;

import com.amap.api.maps.model.LatLng;

public class Constants {

public static final int ERROR = 1001;// 网络异常
    public static final int ROUTE_START_SEARCH = 2000;
    public static final int ROUTE_END_SEARCH = 2001;
    public static final int ROUTE_BUS_RESULT = 2002;// 路径规划中公交模式
    public static final int ROUTE_DRIVING_RESULT = 2003;// 路径规划中驾车模式
    public static final int ROUTE_WALK_RESULT = 2004;// 路径规划中步行模式
    public static final int ROUTE_NO_RESULT = 2005;// 路径规划没有搜索到结果

public static final int GEOCODER_RESULT = 3000;// 地理编码或者逆地理编码成功
    public static final int GEOCODER_NO_RESULT = 3001;// 地理编码或者逆地理编码没有数据

public static final int POISEARCH = 4000;// poi搜索到结果
    public static final int POISEARCH_NO_RESULT = 4001;// poi没有搜索到结果
    public static final int POISEARCH_NEXT = 5000;// poi搜索下一页

public static final int BUSLINE_LINE_RESULT = 6001;// 公交线路查询
    public static final int BUSLINE_id_RESULT = 6002;// 公交id查询
    public static final int BUSLINE_NO_RESULT = 6003;// 异常情况

public static final LatLng BEIJING = new LatLng(39.90403, 116.407525);// 北京市经纬度
    public static final LatLng ZHONGGUANCUN = new LatLng(39.983456, 116.3154950);// 北京市中关村经纬度
    public static final LatLng SHANGHAI = new LatLng(31.238068, 121.501654);// 上海市经纬度
    public static final LatLng FANGHENG = new LatLng(39.989614, 116.481763);// 方恒国际中心经纬度
    public static final LatLng CHENGDU = new LatLng(30.679879, 104.064855);// 成都市经纬度
    public static final LatLng XIAN = new LatLng(34.341568, 108.940174);// 西安市经纬度
    public static final LatLng ZHENGZHOU = new LatLng(34.7466, 113.625367);// 郑州市经纬度
}

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

package com.amap.map3d.demo.util;

import android.content.Context;
import android.os.Environment;

public class OffLineMapUtils {
    /**
     * 获取map 缓存和读取目录
     */
    public static  String getSdCacheDir(Context context) {
        if (Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
            java.io.File fExternalStorageDirectory = Environment
                    .getExternalStorageDirectory();
            java.io.File autonaviDir = new java.io.File(
                    fExternalStorageDirectory, "amapsdk");
            boolean result = false;
            if (!autonaviDir.exists()) {
                result = autonaviDir.mkdir();
            }
            java.io.File minimapDir = new java.io.File(autonaviDir,
                    "offlineMap");
            if (!minimapDir.exists()) {
                result = minimapDir.mkdir();
            }
            return minimapDir.toString() + "/";
        } else {
            return "";
        }
    }
}

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

/**
 *
 */
package com.amap.map3d.demo.util;

import android.content.Context;
import android.widget.Toast;

public class ToastUtil {

public static void show(Context context, String info) {
        Toast.makeText(context, info, Toast.LENGTH_LONG).show();
    }

public static void show(Context context, int info) {
        Toast.makeText(context, info, Toast.LENGTH_LONG).show();
    }
}

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

高德地图——路线规划相关推荐

  1. 高德地图小程序步行路线显示_微信小程序 高德地图路线规划实现过程详解

    前言 最近项目中做到相关网约车小程序.需要使用到地图中的路线规划,对3种地图进行了分析.这里稍微做一下总结: 百度地图 百度坐标 (BD-09) 腾讯地图 火星坐标(GCJ-02) 高德地图 火星坐标 ...

  2. iOS 高德地图路线规划

    最近做了高德地图路线规划,把自己不熟的点记录一下: 1.地图不显示当前位置精准圈:设置mapview的 customizeUserLocationAccuracyCircleRepresentatio ...

  3. 高德地图路线规划 时间_路线准、播报拥堵及时,这次自驾出行高德地图可算是帮了大忙...

    在我们日常生活中,自驾已经成为一种很普遍的出行方式,不仅在时间上灵活,特别是一家人出行也比较方便.伴随自驾出行的除了爱车外,一款靠谱的地图导航软件也成为了必不可少的旅行伙伴. 目前比较常用的地图导航软 ...

  4. java 高德地图路线规划_高德地图 web 页面里的出行路线规划

    高德地图的引入,有两种方式,第一种在引入链接里直接添加 plugin 参数: 第二种是引入链接里不添加  plugin 参数,而是在在使用插件之前,使用AMap.service方法加载插件,然后在回调 ...

  5. uniapp 开发安卓App实现高德地图路线规划导航

    文章目录 技术概述 技术详述 问题与解决 我的总结 参考文献 技术概述 描述这个技术是做什么的/什么情况下会使用到这个技术,学习该技术的原因,技术的难点在哪里.控制在50-100字内. uniapp的 ...

  6. vue 引入高德地图 路线规划

    由于vue-amap不支持路线规划,因此不予采纳. 效果如图 在index.html的header中引入 <script type="text/javascript" src ...

  7. Android高德地图路线规划,自定义图层(overlay),所有点和线刚好显示在屏幕中心

    高德百度地图SDK路线规划包含:步行,公交,驾车,骑车. 搜索的结果是经纬度点信息Latlng(lat,lng) 功能 在地图map中将所有的点连线,并让该线能刚好被当前的地图层级包含,并且当前路线所 ...

  8. 关于Android高德地图路线规划的学习

    其实一开始我是懵逼的 后来看了demo的源码才磕磕绊绊的做了出来. 线路规划属于Android地图SDK. 首先是流程,要有一个MainActivity主类,布局里面有MapView.点击规划路线的按 ...

  9. java 高德地图路线规划_高德地图api之路线规划

    1.引入 2.创建并初始化实例对象 const map = new AMap.Map("container") 3.创建一个导航元素,用来承载导航路线(这里不要忘了,是个坑,用的啥 ...

  10. java 高德地图路线规划_公交出行路线规划-出行路线规划-开发指南-Android 地图SDK | 高德地图API...

    公交路径规划可以根据起终点和公交换乘的数据,使用 BusRouteOverlay 画出公交路线图层,包括起终点和换乘点.另外也可以自定义起终点和换乘点的图标. 目前支持跨城公交路线规划,提供不同城市之 ...

最新文章

  1. 北大数学天才毕业后坚持出家:理想现实间的挣扎
  2. Rxjava、Retrofit返回json数据解析异常处理
  3. 如何清除服务器物理内存,服务器怎样清理物理内存
  4. E - Ignatius and the Princess IV
  5. (转)Linux下的输入/输出重定向
  6. tensor索引[..., 0]
  7. 消费者性别及其所偏好牛奶品牌频数分布
  8. ftp服务器、文件夹中带点文件删除方法
  9. 《Java就业培训教程》_张孝祥_书内源码_08
  10. 51单片机的汇编语言
  11. 使用html查看dicom,LEADTOOLS构建HTML5 DICOM/PACS查看器(二)
  12. Unity3D中GPS定位信息及经纬度转换方法
  13. The Beatles - Don't bother me 歌词翻译
  14. 怎么克隆计算机的mac,MAC地址克隆方法
  15. 【七七八八】简单的对话python代码实现
  16. AndroidStudio-断点调试-也许你该知道断点调试是有多么的美好
  17. myeclipse下用axis2开发web service
  18. Nodejs之Express框架
  19. linux模糊删除文件
  20. 大数据分析策略和发展趋势

热门文章

  1. 小米手机用什么蓝牙耳机好?国产蓝牙耳机推荐
  2. 去除GHOST版系统自带的2345流氓软件
  3. abb机器人建立工件坐标系_【收藏】设定ABB机器人工具坐标的方法
  4. 292. Nim Game(尼姆游戏)
  5. windows service 无法访问映射的网络驱动器
  6. 基于Java实现的MD5算法实现
  7. 2018-8-30-router的自我反思与总结三
  8. python 公司年会抽奖_python实现年会抽奖程序
  9. mysql安装卸载服务_windows下安装、卸载mysql服务的方法(mysql 5.6 zip解
  10. 3D视觉(六):PnP问题(pespective-n-point)