第三方扩展百度地图

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

2017-07-21  本文已影响49人  Android_RD刘多多

百度地图的开发过程中,发现路径规划的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>

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

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

上一篇下一篇

猜你喜欢

热点阅读