`
VIP庚
  • 浏览: 223344 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

百度地图 绘制路线图有多个方案时 实现点击切换路线

 
阅读更多
在这里就不介绍获得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 百度地图之自定义公交路线源码

    在Android开发中,集成百度地图并实现自定义公交路线是一项常见的需求。这涉及到地图API的使用、路径规划算法的理解以及用户界面的定制。本篇将深入解析如何在Android应用中实现这一功能,主要涵盖以下几个核心知识...

    echarts实现北京市地图

    ECharts是一款由百度开发的开源JavaScript数据可视化库,它提供了丰富的图表类型,包括柱状图、折线图、饼图、散点图等,并且支持地图图表,使得地理数据的展示变得简单易行。在本案例中,我们将详细探讨如何使用...

    js jquery 地图 百度地图 谷歌地图 插件及实现 chm手册

    这些插件提供了更多的交互元素和视觉效果,如热力图、图层切换、信息图层等。 6. 实现步骤: - 引入JavaScript库:在HTML中引入jQuery和地图API的脚本链接。 - 初始化地图:使用API提供的函数创建地图实例,设置...

    百度地图模版

    通过调用百度地图API,你可以实现地图的基本操作,如显示地图、切换地图类型(卫星图、普通图等)、缩放、平移、旋转等。在Java或Kotlin代码中,你可以设置初始的中心点经纬度、缩放级别,并监听用户的触摸事件来...

    百度地图demo

    总的来说,“百度地图Demo”是一个全面展示百度地图API特性的实例,对于初学者和有经验的开发者都是极好的参考资料。通过深入研究和实践,开发者能够掌握百度地图的各项功能,为自己的项目增添更多地理信息相关的...

    JS高德地图驾车路线绘制特效代码

    4. **获取沿途坐标**:在`AMap.Driving`的`on`方法中监听`complete`事件,可以获取到完整的路线信息,其中包括多个`AMap.PolylineOption`对象,每个代表一段驾车路径,它们的`path`属性包含了路径上的坐标数组。...

    百度地图使用Demo--全

    2. **UI控制**:包括缩放、平移、旋转等地图操作的控件,以及切换地图模式(如卫星图、地形图)的按钮等,这些元素是用户与地图交互的基础。 3. **POI(Point of Interest)搜索**:提供搜索地点、周边服务的功能,...

    百度地图Android SDK5.1,步行+骑行导航

    该项目包含了完整的代码示例,展示了如何初始化地图、设置导航参数、获取路线规划、绘制导航路径以及更新当前位置等关键操作。通过阅读和学习这个示例,开发者能够快速掌握步行和骑行导航的使用方法,并将其应用到...

    android应用源码百度地图路线规划.rar

    总的来说,“android应用源码百度地图路线规划”项目涵盖了Android应用开发中的地图集成、定位、路径规划等多个重要知识点,对于学习和提升Android开发技能非常有帮助。通过研究这个源码,开发者可以深入理解如何在...

    Android 百度地图之自定义公交路线源码.rar

    综上所述,"Android 百度地图之自定义公交路线源码.rar"涵盖了Android地图开发中的多个重要知识点,对于提升开发者在地图应用开发方面的技能有很大帮助。通过学习这个源码,开发者不仅可以掌握如何在Android应用中...

    百度地图的APIDEMO

    2. **地图展示**:展示地图的基本操作,如缩放、平移、旋转等,以及切换地图类型(卫星图、普通图、地形图等)。 3. **标注与覆盖物**:在地图上添加点、线、面等覆盖物,例如标记、信息窗口、自定义图形等,丰富...

    Jqmobi做的百度地图,支持三维地图 源码

    在这个项目中,开发者利用百度地图API创建了一个三维地图,这在移动设备上的实现需要对API有深入的理解和技术功底。 三维地图功能在现代地图应用中很受欢迎,它可以提供更为直观的城市景观和建筑视角,增强用户体验...

    百度地图 API 参考类

    - **地图图层方法**:用于管理地图的多个图层,支持添加、删除及切换图层。 - **坐标变换**:提供地图坐标系之间的转换功能。 - **事件**:允许监听并响应地图上的用户交互事件,如点击、拖拽等。 #### 控件类 - **...

    android 百度地图实例

    在Android平台上,开发一款应用利用百度地图API是一个常见的需求,特别是在构建导航、定位或地理信息相关的应用程序时。本文将深入探讨“android 百度地图实例”这一项目,它提供了跟踪定位和图层搜索功能。 首先,...

    百度地图iOS版SDK2.3.0 ,包含完整Demo

    百度地图iOS SDK 2.3.0是专为iOS开发者设计的地图服务工具包,它提供了地图展示、定位、路线规划、地理编码、覆盖物绘制等一系列功能,帮助开发者快速构建具有地图功能的应用程序。这个版本的SDK包含了库文件(.a和....

    百度地图移动版API-for-android开发指南

    - **公交换乘路线搜索**: `TransitOverlay` 用于处理复杂的公交换乘路线,展示多条公交线路的组合方案。 ### 总结 百度地图移动版 API for Android 是一个强大的工具,它使得开发者能够轻松地在 Android 应用中...

    百度地图的处理

    总的来说,“百度地图的处理”是一个涵盖定位、搜索和图层管理等多个方面的综合技能。掌握这些技术,开发者可以创建出功能强大、用户体验优秀的地图应用。在实际开发过程中,不断学习和实践,才能更好地运用百度地图...

    Android应用源码之百度手机地图 实例集合.zip

    本压缩包"Android应用源码之百度手机地图 实例集合.zip"包含了多个关于如何使用百度地图API的实际案例,对于学习和理解百度地图SDK的用法具有很高的参考价值。 1. **百度地图API介绍** 百度地图API是百度提供的...

Global site tag (gtag.js) - Google Analytics