今天在做百度地图路线规划时遇到个问题,就是在没有路的时候怎么像百度地图一样 用虚线表示,查看了百度地图里的api没有找到相关方法,但是最终还是解决了这个问题,废话不说上代码
@Override
public void onGetBikingRouteResult(BikingRouteResult result) {
if (result.error == SearchResult.ERRORNO.NO_ERROR) {
//==================================================================================================
//虚线路线关键代码
//构造对象
//构造纹理资源
LatLng pt1 = new LatLng(cn.getData().getDeliver_ypoint(), cn.getData().getDeliver_xpoint());//起点
LatLng pt2 = new LatLng(result.getRouteLines().get(0).getAllStep().get(0).getWayPoints().get(0).latitude,
result.getRouteLines().get(0).getAllStep().get(0).getWayPoints().get(0).longitude);
List<LatLng> points = new ArrayList<LatLng>();
points.add(pt1);//点元素
points.add(pt2);//点元素
//构造对象
OverlayOptions ooPolyline = new PolylineOptions()
.points(points) // 折线的点集
.color(Color.parseColor("#A9A9A9")) // 折线颜色
.width(10) // 折线的宽度 单位像素 默认值5px
.dottedLine(true); // 设置是否为虚线
mBaiduMap.addOverlay(ooPolyline);
public void onGetBikingRouteResult(BikingRouteResult result) {
if (result.error == SearchResult.ERRORNO.NO_ERROR) {
//==================================================================================================
//虚线路线关键代码
//构造对象
//构造纹理资源
LatLng pt1 = new LatLng(cn.getData().getDeliver_ypoint(), cn.getData().getDeliver_xpoint());//起点
LatLng pt2 = new LatLng(result.getRouteLines().get(0).getAllStep().get(0).getWayPoints().get(0).latitude,
result.getRouteLines().get(0).getAllStep().get(0).getWayPoints().get(0).longitude);
List<LatLng> points = new ArrayList<LatLng>();
points.add(pt1);//点元素
points.add(pt2);//点元素
//构造对象
OverlayOptions ooPolyline = new PolylineOptions()
.points(points) // 折线的点集
.color(Color.parseColor("#A9A9A9")) // 折线颜色
.width(10) // 折线的宽度 单位像素 默认值5px
.dottedLine(true); // 设置是否为虚线
mBaiduMap.addOverlay(ooPolyline);
//构造纹理资源
LatLng pt1_end = new LatLng(result.getRouteLines().get(0).getAllStep().get(result.getRouteLines().get(0).getAllStep().
size() - 1).getWayPoints().get(result.getRouteLines().get(0).getAllStep().get(result.getRouteLines().get(0).getAllStep().size() - 1).
getWayPoints().size() - 1).latitude, result.getRouteLines().get(0).getAllStep().
get(result.getRouteLines().get(0).getAllStep().size() - 1).getWayPoints().get(result.getRouteLines().get(0).
getAllStep().get(result.getRouteLines().get(0).getAllStep().size() - 1).getWayPoints().size() - 1).longitude);
LatLng pt2_end = new LatLng(cn.getData().getReceipt_ypoint(), cn.getData().getReceipt_xpoint());//终点
List<LatLng> points_end = new ArrayList<LatLng>();
points_end.add(pt1_end);//点元素
points_end.add(pt2_end);//点元素
//构造对象
OverlayOptions ooPolyline_end = new PolylineOptions()
.points(points_end) // 折线的点集
.color(Color.parseColor("#A9A9A9")) // 折线颜色
.width(10) // 折线的宽度 单位像素 默认值5px
.dottedLine(true); // 设置是否为虚线
mBaiduMap.addOverlay(ooPolyline_end);
List<LatLng> points_end = new ArrayList<LatLng>();
points_end.add(pt1_end);//点元素
points_end.add(pt2_end);//点元素
//构造对象
OverlayOptions ooPolyline_end = new PolylineOptions()
.points(points_end) // 折线的点集
.color(Color.parseColor("#A9A9A9")) // 折线颜色
.width(10) // 折线的宽度 单位像素 默认值5px
.dottedLine(true); // 设置是否为虚线
mBaiduMap.addOverlay(ooPolyline_end);
//==================================================================================================
nodeIndex = -1;
if (result.getRouteLines().size() > 1) {
nowResultbike = result;
if (!hasShownDialogue) {
MyTransitDlg myTransitDlg = new MyTransitDlg(mContext,
result.getRouteLines(),
RouteLineAdapter.Type.DRIVING_ROUTE);
myTransitDlg.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
hasShownDialogue = false;
}
});
myTransitDlg.setOnItemInDlgClickLinster(new OnItemInDlgClickListener() {
public void onItemClick(int position) {
route = nowResultbike.getRouteLines().get(position);
BikingRouteOverlay overlay = new MyBikingRouteOverlay(mBaiduMap);
mBaiduMap.setOnMarkerClickListener(overlay);
routeOverlay = overlay;
overlay.setData(nowResultbike.getRouteLines().get(position));
overlay.addToMap();
overlay.zoomToSpan();
}
nodeIndex = -1;
if (result.getRouteLines().size() > 1) {
nowResultbike = result;
if (!hasShownDialogue) {
MyTransitDlg myTransitDlg = new MyTransitDlg(mContext,
result.getRouteLines(),
RouteLineAdapter.Type.DRIVING_ROUTE);
myTransitDlg.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
hasShownDialogue = false;
}
});
myTransitDlg.setOnItemInDlgClickLinster(new OnItemInDlgClickListener() {
public void onItemClick(int position) {
route = nowResultbike.getRouteLines().get(position);
BikingRouteOverlay overlay = new MyBikingRouteOverlay(mBaiduMap);
mBaiduMap.setOnMarkerClickListener(overlay);
routeOverlay = overlay;
overlay.setData(nowResultbike.getRouteLines().get(position));
overlay.addToMap();
overlay.zoomToSpan();
}
});
myTransitDlg.show();
hasShownDialogue = true;
}
} else if (result.getRouteLines().size() == 1) {
route = result.getRouteLines().get(0);
BikingRouteOverlay overlay = new MyBikingRouteOverlay(mBaiduMap);
routeOverlay = overlay;
mBaiduMap.setOnMarkerClickListener(overlay);
overlay.setData(result.getRouteLines().get(0));
overlay.addToMap();
overlay.zoomToSpan();
myTransitDlg.show();
hasShownDialogue = true;
}
} else if (result.getRouteLines().size() == 1) {
route = result.getRouteLines().get(0);
BikingRouteOverlay overlay = new MyBikingRouteOverlay(mBaiduMap);
routeOverlay = overlay;
mBaiduMap.setOnMarkerClickListener(overlay);
overlay.setData(result.getRouteLines().get(0));
overlay.addToMap();
overlay.zoomToSpan();
} else {
Log.d("route result", "结果数<0");
return;
}
Log.d("route result", "结果数<0");
return;
}
}
}