首先按照百度地图官方文档配置
1、找到控件
ed_k = (EditText) findViewById(R.id.ed_k);
ed_z = (EditText) findViewById(R.id.ed_z);
btn_go = (Button) findViewById(R.id.btn_go);
mMapView = (MapView) findViewById(R.id.mMapView);
并设置成成员变量
2、设置地图
baiduMap = mMapView.getMap();
mSearch = RoutePlanSearch.newInstance();
mSearch.setOnGetRoutePlanResultListener(this);
3、按钮监听方法内初始化
baiduMap.clear();
String start = ed_k.getText().toString();
String des = ed_z.getText().toString();
if (TextUtils.isEmpty(start)){
Toast.makeText(this, "起点不能为空", Toast.LENGTH_SHORT).show(); return;
}
if (TextUtils.isEmpty(des)){
Toast.makeText(this, "终点不能为空", Toast.LENGTH_SHORT).show();
return;
}
mSearch.drivingSearch((new DrivingRoutePlanOption()).from(PlanNode.withCityNameAndPlaceName ("北京", start)).to(PlanNode.withCityNameAndPlaceName("北京", des)));
4、粘贴一下方法
@Override public void onGetWalkingRouteResult(WalkingRouteResult walkingRouteResult) { } @Override public void onGetTransitRouteResult(TransitRouteResult transitRouteResult) { } @Override public void onGetMassTransitRouteResult(MassTransitRouteResult massTransitRouteResult) { } @Override public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) { if (drivingRouteResult == null || drivingRouteResult.error != SearchResult.ERRORNO.NO_ERROR) { if (drivingRouteResult.error.equals("NETWORK_ERROR")){ Toast.makeText(this, "网络未连接", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show(); } } if (drivingRouteResult.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) { Toast.makeText(this, "非法地址", Toast.LENGTH_SHORT).show(); return; } if (drivingRouteResult.error == SearchResult.ERRORNO.NO_ERROR) { if (drivingRouteResult.getRouteLines().size() >= 1) { DrivingRouteOverlay overlay = new MyDrivingRouteOverlay(baiduMap); // mBaiduMap.setOnMarkerClickListener(overlay); overlay.setData(drivingRouteResult.getRouteLines().get(0)); overlay.addToMap(); overlay.zoomToSpan(); } else { Toast.makeText(this, "路线规划失败", Toast.LENGTH_SHORT).show(); } } } @Override public void onGetIndoorRouteResult(IndoorRouteResult indoorRouteResult) { } @Override public void onGetBikingRouteResult(BikingRouteResult bikingRouteResult) { } private class MyDrivingRouteOverlay extends DrivingRouteOverlay { public MyDrivingRouteOverlay(BaiduMap baiduMap) { super(baiduMap); } @Override public BitmapDescriptor getStartMarker() { return BitmapDescriptorFactory.fromResource(R.drawable.icon_st); } @Override public BitmapDescriptor getTerminalMarker() { return BitmapDescriptorFactory.fromResource(R.drawable.icon_en); } }
public class MainGuiHuaActivity extends AppCompatActivity implements View.OnClickListener, OnGetRoutePlanResultListener {
private EditText ed_k;
private EditText ed_z;
private Button btn_go;
private MapView mMapView;
private BaiduMap baiduMap;
private RoutePlanSearch mSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_gui_hua);
initView();
}
private void initView() {
ed_k = (EditText) findViewById(R.id.ed_k);
ed_z = (EditText) findViewById(R.id.ed_z);
btn_go = (Button) findViewById(R.id.btn_go);
mMapView = (MapView) findViewById(R.id.mMapView);
btn_go.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_go:
baiduMap.clear();
String start = ed_k.getText().toString();
String des = ed_z.getText().toString();
if (TextUtils.isEmpty(start)){
Toast.makeText(this, "起点不能为空", Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(des)){
Toast.makeText(this, "终点不能为空", Toast.LENGTH_SHORT).show();
return;
}
mSearch.drivingSearch((new DrivingRoutePlanOption()).from(PlanNode.withCityNameAndPlaceName
("北京", start)).to(PlanNode.withCityNameAndPlaceName("北京", des)));
break;
}
}
@Override
public void onGetWalkingRouteResult(WalkingRouteResult walkingRouteResult) {
}
@Override
public void onGetTransitRouteResult(TransitRouteResult transitRouteResult) {
}
@Override
public void onGetMassTransitRouteResult(MassTransitRouteResult massTransitRouteResult) {
}
@Override
public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {
if (drivingRouteResult == null || drivingRouteResult.error != SearchResult.ERRORNO.NO_ERROR) {
if (drivingRouteResult.error.equals("NETWORK_ERROR")){
Toast.makeText(this, "网络未连接", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();
}
}
if (drivingRouteResult.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
Toast.makeText(this, "非法地址", Toast.LENGTH_SHORT).show();
return;
}
if (drivingRouteResult.error == SearchResult.ERRORNO.NO_ERROR) {
if (drivingRouteResult.getRouteLines().size() >= 1) {
DrivingRouteOverlay overlay = new MyDrivingRouteOverlay(baiduMap);
// mBaiduMap.setOnMarkerClickListener(overlay);
overlay.setData(drivingRouteResult.getRouteLines().get(0));
overlay.addToMap();
overlay.zoomToSpan();
} else {
Toast.makeText(this, "路线规划失败", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onGetIndoorRouteResult(IndoorRouteResult indoorRouteResult) {
}
@Override
public void onGetBikingRouteResult(BikingRouteResult bikingRouteResult) {
}
private class MyDrivingRouteOverlay extends DrivingRouteOverlay {
public MyDrivingRouteOverlay(BaiduMap baiduMap) {
super(baiduMap);
}
@Override
public BitmapDescriptor getStartMarker() {
return BitmapDescriptorFactory.fromResource(R.drawable.icon_st);
}
@Override
public BitmapDescriptor getTerminalMarker() {
return BitmapDescriptorFactory.fromResource(R.drawable.icon_en);
}
}
}