驾车路线
package com.ldw.zbqq;
import java.util.ArrayList;
import java.util.List;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.overlayutil.DrivingRouteOverlay;
import com.baidu.mapapi.search.core.SearchResult;
import com.baidu.mapapi.search.route.DrivingRoutePlanOption;
import com.baidu.mapapi.search.route.DrivingRouteResult;
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.WalkingRouteResult;
import android.os.Bundle;
import android.widget.Toast;
/*
* 驾车路线搜索
*/
public class DrivingRouteOverlayDemo extends BaseActivity {
private RoutePlanSearch routePlanSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
search();
}
private void search() {
// 单例 RoutePlanSearch,路线搜索
routePlanSearch = RoutePlanSearch.newInstance();
//监听
routePlanSearch.setOnGetRoutePlanResultListener(new MyListener());
DrivingRoutePlanOption drivingOption = new DrivingRoutePlanOption();
PlanNode from = PlanNode.withLocation(hmPos);// 创建起点
PlanNode to = PlanNode.withLocation(new LatLng(22.5522335,114.1061785));// 创建终点
drivingOption.from(from);// 设置起点
drivingOption.to(to);// 设置终点
//设置经过路线
List<PlanNode> nodes = new ArrayList<PlanNode>();
nodes.add(PlanNode.withCityNameAndPlaceName("华侨城", "世博园"));
drivingOption.passBy(nodes);
drivingOption.policy(DrivingRoutePlanOption.DrivingPolicy.ECAR_DIS_FIRST);// 设置策略
routePlanSearch.drivingSearch(drivingOption);
}
class MyListener implements OnGetRoutePlanResultListener{
@Override
public void onGetDrivingRouteResult(DrivingRouteResult result) {
if (result == null
|| SearchResult.ERRORNO.RESULT_NOT_FOUND == result.error) {
Toast.makeText(getApplicationContext(), "未搜索到结果", 0).show();
return;
}
DrivingRouteOverlay overlay = new MyDrivingOverlay(baiduMap);
baiduMap.setOnMarkerClickListener(overlay);// 把事件传递给overlay
overlay.setData(result.getRouteLines().get(0));// 设置线路为第一条
overlay.addToMap();
overlay.zoomToSpan();
}
@Override
public void onGetTransitRouteResult(TransitRouteResult result) {
}
@Override
public void onGetWalkingRouteResult(WalkingRouteResult result) {
}
}
class MyDrivingOverlay extends DrivingRouteOverlay{
public MyDrivingOverlay(BaiduMap arg0) {
super(arg0);
}
@Override
public BitmapDescriptor getStartMarker() {
//覆写此方法以改变默认起点图标
return BitmapDescriptorFactory.fromResource(R.drawable.icon_st);
}
@Override
public BitmapDescriptor getTerminalMarker() {
//覆写此方法以改变默认终点图标
return BitmapDescriptorFactory.fromResource(R.drawable.icon_en);
}
}
}
公交路线
package com.ldw.zbqq;
import android.os.Bundle;
import android.widget.Toast;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.overlayutil.DrivingRouteOverlay;
import com.baidu.mapapi.overlayutil.TransitRouteOverlay;
import com.baidu.mapapi.search.core.SearchResult;
import com.baidu.mapapi.search.route.DrivingRouteResult;
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.TransitRoutePlanOption;
import com.baidu.mapapi.search.route.TransitRouteResult;
import com.baidu.mapapi.search.route.WalkingRouteResult;
/*
* 公交路线
*/
public class TransitRouteOverlayDemo extends BaseActivity {
private RoutePlanSearch routePlanSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
search();
}
private void search() {
routePlanSearch = RoutePlanSearch.newInstance();
routePlanSearch.setOnGetRoutePlanResultListener(new MyListener());
TransitRoutePlanOption transitOption = new TransitRoutePlanOption();
PlanNode from = PlanNode.withLocation(hmPos);// 创建起点
PlanNode to = PlanNode.withLocation(new LatLng(22.5522335,114.1061785));// 创建终点
transitOption.from(from);
transitOption.to(to);
transitOption.city("深圳");
transitOption.policy(TransitRoutePlanOption.TransitPolicy.EBUS_WALK_FIRST);
routePlanSearch.transitSearch(transitOption);
}
class MyListener implements OnGetRoutePlanResultListener{
@Override
public void onGetDrivingRouteResult(DrivingRouteResult result) {}
@Override
public void onGetTransitRouteResult(TransitRouteResult result) {
if (result == null
|| SearchResult.ERRORNO.RESULT_NOT_FOUND == result.error) {
Toast.makeText(getApplicationContext(), "未搜索到结果", 0).show();
return;
}
TransitRouteOverlay overlay = new TransitRouteOverlay(baiduMap);
baiduMap.setOnMarkerClickListener(overlay);// 把事件传递给overlay
overlay.setData(result.getRouteLines().get(0));// 设置线路为第一条
overlay.addToMap();
overlay.zoomToSpan();
}
@Override
public void onGetWalkingRouteResult(WalkingRouteResult result) {
}
}
class MyDrivingOverlay extends DrivingRouteOverlay{
public MyDrivingOverlay(BaiduMap arg0) {
super(arg0);
}
@Override
public BitmapDescriptor getStartMarker() {
//覆写此方法以改变默认起点图标
return BitmapDescriptorFactory.fromResource(R.drawable.icon_st);
}
@Override
public BitmapDescriptor getTerminalMarker() {
//覆写此方法以改变默认终点图标
return BitmapDescriptorFactory.fromResource(R.drawable.icon_en);
}
}
}
步行路线搜索
package com.ldw.zbqq;
import android.os.Bundle;
import android.widget.Toast;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.overlayutil.WalkingRouteOverlay;
import com.baidu.mapapi.search.core.SearchResult;
import com.baidu.mapapi.search.route.DrivingRouteResult;
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;
/*
* 步行路线
*/
public class WalkingRouteOverlayDemo extends BaseActivity {
private RoutePlanSearch routePlanSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
search();
}
private void search() {
routePlanSearch = RoutePlanSearch.newInstance();
routePlanSearch.setOnGetRoutePlanResultListener(new MyListener());
WalkingRoutePlanOption walkOption = new WalkingRoutePlanOption();
PlanNode from = PlanNode.withLocation(hmPos);// 创建起点
PlanNode to = PlanNode.withLocation(new LatLng(22.5522335,114.1061785));// 创建终点
//走老路默认选择最优路径
walkOption.from(from);
walkOption.to(to);
routePlanSearch.walkingSearch(walkOption);
}
class MyListener implements OnGetRoutePlanResultListener{
@Override
public void onGetDrivingRouteResult(DrivingRouteResult result) {}
@Override
public void onGetTransitRouteResult(TransitRouteResult result) {
}
@Override
public void onGetWalkingRouteResult(WalkingRouteResult result) {
if (result == null
|| SearchResult.ERRORNO.RESULT_NOT_FOUND == result.error) {
Toast.makeText(getApplicationContext(), "未搜索到结果", 0).show();
return;
}
WalkingRouteOverlay overlay = new WalkingRouteOverlay(baiduMap);
baiduMap.setOnMarkerClickListener(overlay);// 把事件传递给overlay
overlay.setData(result.getRouteLines().get(0));// 设置线路为第一条
overlay.addToMap();
overlay.zoomToSpan();
}
}
}