在这里就不介绍获得3种方式的路线了 详情参照http://developer.baidu.com/map/index.php?title=androidsdk/guide/retrieval#.E7.BA.BF.E8.B7.AF.E8.A7.84.E5.88.92
如图所示 当有多种路线方案时就选择最佳的3条 默认最优线路处于高亮状态,当点击其他路线时,点击的路线处于高亮状态
在这示范乘车路线
一 首先在OnGetRoutePlanResultListener里绘制所有路线方案
/**
* 驾车路线结果回调 查询的结果可能包括多条驾车路线方案
*/
@Override
public void onGetDrivingRouteResult(
DrivingRouteResult drivingRouteResult) {
mBaidumap.clear();
if (drivingRouteResult == null
|| drivingRouteResult.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText(MainActivity.this, "抱歉,未找到结果",
Toast.LENGTH_SHORT).show();
}
if (drivingRouteResult.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
// 起终点或途经点地址有岐义,通过以下接口获取建议查询信息
// drivingRouteResult.getSuggestAddrInfo()
return;
}
if (drivingRouteResult.error == SearchResult.ERRORNO.NO_ERROR) {
int totalLine = drivingRouteResult.getRouteLines().size();
drivingRoutes.clear();
for(int i=totalLine-1;i>=0;i--){
DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay(
mBaidumap);
if(i!=0) {
drivingRouteOverlay.setLineColor(Color.parseColor("#bdbdbd"));
}else{
drivingRouteOverlay.setLineColor(Color.BLUE);
}
drivingRouteOverlay.setData(drivingRouteResult.getRouteLines()
.get(i));// 设置一条驾车路线方案
drivingRouteOverlay.addToMap();
drivingRouteOverlay.zoomToSpan();
mBaidumap.setOnPolylineClickListener(drivingRouteOverlay);
//设置点击路标监听器
mBaidumap.setOnMarkerClickListener(drivingRouteOverlay);
}
Toast.makeText(MainActivity.this,
"共查询出" + totalLine + "条符合条件的线路", Toast.LENGTH_SHORT).show();
}
之所以从后往前遍历是因为我认为百度地图提供的方案路线数组中第一个是最优方案,
所以作为最后一个添加到地图上,才能显示在最上层,将其余路线覆盖
二 修改DrivingRouteOverlay源代码
DrivingRouteOverlay继承了OverlayManager,而OverlayManager又继承了OnPolylineClickListener,所以DrivingRouteOverlay本身也是一个PolylineClickListener(polyline覆盖物点击事件监听接口)的监听器,所以可以重写onPolylineClick的方法来实现点击一个路线后切换
@Override
public boolean onPolylineClick(Polyline polyline) {
boolean flag = false;
for (Overlay mPolyline : mOverlayList) {
if(mPolyline instanceof Polyline){
//改变路线颜色为未选中状态
((Polyline) mPolyline).setColor(Color.parseColor("#bdbdbd"));
//改变路线未被选中
((Polyline) mPolyline).setFocus(false);
//设置路线的层级 注意要比选中路线的层级低
((Polyline) mPolyline).setZIndex(10);
if(mPolyline.equals(polyline)){
((Polyline) mPolyline).setFocus(true);
//设置选中的路线颜色为高亮状态
polyline.setColor(Color.BLUE);
///设置选中的路线的层级 一定要比上面的高
polyline.setZIndex(15);
}
}
}
//setFocus(flag);
return true;
}
- 大小: 127.1 KB
- 大小: 118.2 KB
分享到:
相关推荐
android 百度地图api地位 百度地图定位及绘制路线
百度地图绘制实时路线以及最短线路规划,具体内容可查看这篇文章http://blog.csdn.net/zero172/article/details/51303741#comments
百度地图绘制多边形,显示位置等
基于ECharts结合百度地图绘制地理信息数据
利用百度地图鼠标绘制工具库绘制不规则几何图形并保存坐标转成覆盖物
JS高德地图模拟驾车路线规划绘制代码是一款通过高德地图获取路线的沿途坐标,从而模拟驾车路线规划。
从数组拿经纬度,在地图上标注点,绘制折线
百度地图 轨迹绘制 路线规划,优化了上个版本中的一些问题
Android -----高德卫星地图绘制多个点和点的点击事件自定义弹窗,博客地址:http://blog.csdn.net/dickyqie/article/details/78084485
百度地图api绘制路线规划实例;其中图中蓝色小圆圈的点为途径点,在起点与终点之间经历9个途经点,通过设置调取api自动搜索由起点到终点并且经过途径点的最优(步行)路线规划。在demo示例中对规划js做了封装。
可支持h5、web端js绘制百度地铁线路图
百度地图鼠标绘制工具.html
安卓百度地图,实现多点之间的连线。可根据自己需要自定义路线。
1.该部分内容来自新华三NAVIGATE创客节-黑客松“物联网终端行为分析”第三题:已知一系列经纬度坐标点,在百度地图上画出该坐标点对应的运动轨迹。 2.压缩包包括HTML代码、包含实际经纬度信息的TXT文档、用于搭建...
百度地图历史轨迹绘制,动画播放,暂停、加速、减速,车头实时角度偏移,HTML页面点开即可使用
百度地图marker动画的实现,动画是基于css3的animation实现的,可以根据需求的不同修改乘不同的动画效果
百度地图绘制车辆实时位置
百度地图绘制echarts,地图可精确到县区,乡镇自定义demo。通过百度地图坐标点,调用echarts中map方法,可参见echarts文档,最终自定义县区或乡镇图表,拥有echarts所有功能及效果。
百度地图js版api几何图形绘制保存到数据库并展示,如何绘制大神们代码已经有了,
NULL 博文链接:https://musicbox95351.iteye.com/blog/1767010