美文网首页第三方扩展百度地图
android百度地图,路线规划增加没有路的虚线。

android百度地图,路线规划增加没有路的虚线。

作者: Android_RD刘多多 | 来源:发表于2017-07-21 17:08 被阅读49次

    百度地图的开发过程中,发现路径规划的api接口有一个缺陷,就是只显示有路的路线,在没有道路的情况下,比如我定位到了大厦里面,那路线就是在大厦附近的道路上起始的。

    而很多单车app我发现解决了这个问题,我也是做单车产品的,然后发现这个问题,百度无果,自己想了一个方法添加了额外的路线。

    百度地图app有这个功能,可能api没有完善吧。

    <pre>
    @Override
    public void onGetWalkingRouteResult(WalkingRouteResult result) {
    if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
    Toast.makeText(getApplicationContext(), "未找到路线规划结果", Toast.LENGTH_SHORT).show();
    }
    if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
    // 起终点或途经点地址有岐义,通过以下接口获取建议查询信息
    // result.getSuggestAddrInfo()
    return;
    }

        if (result.error == SearchResult.ERRORNO.NO_ERROR) {
          **  //构造纹理资源
            LatLng pt1 = new LatLng(latitude, lontitude);
            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 = latLng_RouteplanningEnd;
            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);**
    
            // TransitOverlay是baidu map api提供的用于在地图上显示公交换乘路线的Overlay
            route = result.getRouteLines().get(0);
            WalkingRouteOverlay option = new WalkingRouteOverlay(mBaiduMap);
            mBaiduMap.setOnMarkerClickListener(option);
            option.setData(result.getRouteLines().get(0));
            option.addToMap();
            option.zoomToSpan();
        }
    }
    

    </pre>

    主要是加粗的两段代码,最后一段是官网给出的示例。

    根据请求回来的路线集合,取出来起始位置的坐标点,和我的位置以及终点坐标进行勾画折线覆盖物,来完成完整的路线规划。

    相关文章

      网友评论

        本文标题:android百度地图,路线规划增加没有路的虚线。

        本文链接:https://www.haomeiwen.com/subject/hmmekxtx.html