使用的是百度地图的API,地址是:androidsdk | 百度地图API SDK
步骤一:配置build.gradle
dependencies {
implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.1.8'
compile 'com.baidu.lbsyun:BaiduMapSDK_Map:7.4.0'
compile 'com.baidu.lbsyun:BaiduMapSDK_Search:7.4.0'
}
步骤二:创建路线规划检索实例
mSearch = RoutePlanSearch.newInstance();
步骤三:创建路线规划检索结果监听器
OnGetRoutePlanResultListener listener = new OnGetRoutePlanResultListener() {
@Override
public void onGetWalkingRouteResult(WalkingRouteResult walkingRouteResult) {
//创建WalkingRouteOverlay实例
WalkingRouteOverlay overlay = new WalkingRouteOverlay(mBaiduMap);
if (walkingRouteResult.getRouteLines().size() > 0) {
//获取路径规划数据,(以返回的第一条数据为例)
//为WalkingRouteOverlay实例设置路径数据
overlay.setData(walkingRouteResult.getRouteLines().get(0));
//在地图上绘制WalkingRouteOverlay
overlay.addToMap();
}
}
......
};
全部代码:
- package com.meal;
-
- import android.app.AlertDialog;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.os.Bundle;
- import android.os.Handler;
- import android.text.TextUtils;
- import android.util.Log;
- import android.view.View;
- import android.view.inputmethod.InputMethodManager;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.TextView;
-
- import com.baidu.mapapi.map.BaiduMap;
- import com.baidu.mapapi.map.BitmapDescriptor;
- import com.baidu.mapapi.map.BitmapDescriptorFactory;
- import com.baidu.mapapi.map.MapView;
- import com.baidu.mapapi.model.LatLng;
- import com.baidu.mapapi.search.core.RouteLine;
- import com.baidu.mapapi.search.core.SearchResult;
- import com.baidu.mapapi.search.route.BikingRouteResult;
- import com.baidu.mapapi.search.route.DrivingRouteResult;
- import com.baidu.mapapi.search.route.IndoorRouteResult;
- import com.baidu.mapapi.search.route.MassTransitRouteResult;
- import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener;
- import com.baidu.mapapi.search.route.PlanNode;
- import com.baidu.mapapi.search.route.RoutePlanSearch;
- import com.baidu.mapapi.search.route.TransitRouteResult;
- import com.baidu.mapapi.search.route.WalkingRoutePlanOption;
- import com.baidu.mapapi.search.route.WalkingRouteResult;
- import com.map.WalkingRouteOverlay;
- import com.pony.base.BaseActivity;
- import com.pony.config.Consts;
- import com.pony.db.MemberUserUtils;
- import com.pony.model.ChoiceAddressModel;
- import com.pony.model.OrderModel;
- import com.pony.model.ResponseEntry;
- import com.pony.util.ToastUtil;
- import com.pony.view.CustomToast;
-
- import net.tsz.afinal.http.AjaxParams;
-
- import java.util.HashMap;
-
- public class ShowLineActivity extends BaseActivity implements OnGetRoutePlanResultListener {
- // title
- private TextView mTvTitle, setting_text;
- // 返回
- private ImageView mIvBack;
- // 查询按钮
-
-
- private MapView mMapView = null;
- private BaiduMap baiduMap;
-
- LinearLayout mllGoBuy;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_showline);
- initWidget();
- initData();
- }
-
- @Override
- public void initWidget() {
-
- mMapView = (MapView) findViewById(R.id.bmapView);
- baiduMap = mMapView.getMap();
- setting_text = (TextView) findViewById(R.id.setting_text);
-
- mIvBack = (ImageView) findViewById(R.id.mIvBack);
- mTvTitle = (TextView) findViewById(R.id.mTvTitle);
- mTvTitle.setText("显示线路");
- mIvBack.setVisibility(View.VISIBLE);
- mIvBack.setOnClickListener(this);
-
- mllGoBuy = (LinearLayout) findViewById(R.id.mllGoBuy);
- mllGoBuy.setOnClickListener(this);
-
-
- }
-
- // 搜索模块,也可去掉地图模块独立使用
- private RoutePlanSearch mSearch = null;
- private WalkingRouteResult mWalkingRouteResult = null;
- private RouteLine mRouteLine = null;
-
-
- ChoiceAddressModel startInfor;
- ChoiceAddressModel endInfor;
-
- @Override
- public void initData() {
-
-
- String startInfor = this.getIntent().getStringExtra("startInfor");
- String endInfor = this.getIntent().getStringExtra("endInfor");
-
-
- LatLng mStartPoint = new LatLng(Double.valueOf(startInfor.split(",")[0]), Double.valueOf(startInfor.split(",")[1]));
- LatLng mEndPoint = new LatLng(Double.valueOf(endInfor.split(",")[0]), Double.valueOf(endInfor.split(",")[1]));
-
-
- // 初始化搜索模块,注册事件监听
- mSearch = RoutePlanSearch.newInstance();
- mSearch.setOnGetRoutePlanResultListener(this);
-
-
- // // 设置起终点信息 起点参数
- PlanNode startNode = PlanNode.withLocation(mStartPoint);
- // 终点参数
- PlanNode endNode = PlanNode.withLocation(mEndPoint);
- //
-
-
- // // 实际使用中请对起点终点城市进行正确的设定
- mSearch.walkingSearch((new WalkingRoutePlanOption())
- .from(startNode) // 起点
- .to(endNode)); // 终点
- }
-
- @Override
- public void onClick(View v) {
-
- switch (v.getId()) {
- case R.id.mIvBack:
- ShowLineActivity.this.finish();
- break;
- case R.id.mllGoBuy:
- addOrder(true);
- break;
- }
- }
-
-
- /**
- * 订单的添加
- *
- * @param isShow
- */
- private void addOrder(boolean isShow) {
- AjaxParams params = new AjaxParams();
-
- params.put("action_flag", "addOrder");
-
-
- params.put("orderStartLatLng", this.getIntent().getStringExtra("startInfor"));
- params.put("orderEndLatLng", this.getIntent().getStringExtra("endInfor"));
-
- params.put("orderAddressStart", this.getIntent().getStringExtra("startAddress"));
- params.put("orderAddressEnd", this.getIntent().getStringExtra("endAddress"));
-
- params.put("orderLongTime", distanceInfor / 60 + "分钟");
- params.put("orderDistance", distanceInfor + "米");
-
- params.put("orderUserId", MemberUserUtils.getUid(this));
- params.put("orderUserName", MemberUserUtils.getName(this));
-
- httpPost(Consts.URL + Consts.APP.MessageAction, params, Consts.actionId.resultFlag, isShow, "正在加载...");
- }
-
- @Override
- protected void callBackSuccess(ResponseEntry entry, int actionId) {
- super.callBackSuccess(entry, actionId);
- CustomToast.showToast(this, "保存成功");
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- finish();
- }
- }, 2000);
- }
-
- @Override
- protected void callBackAllFailure(String strMsg, int actionId) {
- super.callBackAllFailure(strMsg, actionId);
- ToastUtil.show(this, strMsg);
- }
-
- double distanceInfor;
-
- @Override
- public void onGetWalkingRouteResult(WalkingRouteResult walkingRouteResult) {
-
- if (walkingRouteResult.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle("提示");
- builder.setMessage("检索地址有歧义,请重新设置。\n可通过getSuggestAddrInfo()接口获得建议查询信息");
- builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- });
- builder.create().show();
- return;
- }
-
- Log.i("pony_log", walkingRouteResult.getRouteLines().size() + "");
-
- WalkingRouteOverlay overlay = new WalkingRouteOverlay(baiduMap);
- if (walkingRouteResult.getRouteLines().size() > 0) {
- distanceInfor = walkingRouteResult.getRouteLines().get(0).getDistance();
- Log.i("pony_log", walkingRouteResult.getRouteLines().get(0).getDistance() + "");
- setting_text.setText("路径时间:" + walkingRouteResult.getRouteLines().get(0).getDistance() / 60 + "分钟");
- //获取路径规划数据,(以返回的第一条数据为例)
- //为WalkingRouteOverlay实例设置路径数据
-
- overlay.setData(walkingRouteResult.getRouteLines().get(0));
- //在地图上绘制WalkingRouteOverlay
- overlay.addToMap();
- overlay.zoomToSpan();
- }
-
- }
-
- @Override
- public void onGetTransitRouteResult(TransitRouteResult transitRouteResult) {
-
- }
-
- @Override
- public void onGetMassTransitRouteResult(MassTransitRouteResult massTransitRouteResult) {
-
- }
-
- @Override
- public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {
-
- }
-
- @Override
- public void onGetIndoorRouteResult(IndoorRouteResult indoorRouteResult) {
-
- }
-
- @Override
- public void onGetBikingRouteResult(BikingRouteResult bikingRouteResult) {
-
- }
-
- private boolean mUseDefaultIcon = false;
-
- private class MyWalkingRouteOverlay extends WalkingRouteOverlay {
-
- private MyWalkingRouteOverlay(BaiduMap baiduMap) {
- super(baiduMap);
- }
-
- @Override
- public BitmapDescriptor getStartMarker() {
- if (mUseDefaultIcon) {
- return BitmapDescriptorFactory.fromResource(R.drawable.icon_st);
- }
- return null;
- }
-
- @Override
- public BitmapDescriptor getTerminalMarker() {
- if (mUseDefaultIcon) {
- return BitmapDescriptorFactory.fromResource(R.drawable.icon_en);
- }
- return null;
- }
- }
-
- }