浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

Android 地图SDK

百度地图SDK是一套应用程序接口, 通过调用地图SDK接口,开发者可以轻松访问百度地图的服务和数据,构建功能丰富、交互性强的地图类应用程序。

本章节将对绘制折线、绘制虚线、分段颜色绘制折线、分段纹理绘制折线。通过这些功能,可以绘制各样的规划路线或物体轨迹。
绘制折线

在地图上添加折线的方法如下:

    //构建折线点坐标
        LatLng p1 = new LatLng(39.97923, 116.357428);
        LatLng p2 = new LatLng(39.94923, 116.397428);
        LatLng p3 = new LatLng(39.97923, 116.437428);
        List<LatLng> points = new ArrayList<LatLng>();
        points.add(p1);
        points.add(p2);
        points.add(p3);

    //绘制折线
        OverlayOptions ooPolyline = new PolylineOptions().width(10)
                .color(0xAAFF0000).points(points);
        mPolyline = (Polyline) mBaiduMap.addOverlay(ooPolyline);

绘制虚线

先绘制普通折线,然后通过setDottedLine(enabled)来控制显示为虚线。

mPolyline.setDottedLine(enabled);

//设置是否虚线绘制

分段颜色绘制折线

自v3.6.0版本起,扩展了折线多段颜色绘制能力:支持分段颜色绘制。

通过构造PolylineOptions对象,添加折线分段颜色绘制覆盖物,核心代码如下:

 // 构造折线点坐标

List<LatLng> points = new ArrayList<LatLng>();
points.add(new LatLng(39.965,116.404));
points.add(new LatLng(39.925,116.454));
points.add(new LatLng(39.955,116.494));
points.add(new LatLng(39.905,116.554));
points.add(new LatLng(39.965,116.604));
 
//构建分段颜色索引数组

List<Integer> colors = new ArrayList<>();
colors.add(Integer.valueOf(Color.BLUE));
colors.add(Integer.valueOf(Color.RED));
colors.add(Integer.valueOf(Color.YELLOW));
colors.add(Integer.valueOf(Color.GREEN));
 
OverlayOptions ooPolyline = new PolylineOptions().width(10)
        .colorsValues(colors).points(points);

添加在地图中

Polyline  mPolyline = (Polyline) mBaiduMap.addOverlay(ooPolyline);

运行结果:

SectionDrawing1.png

分段纹理绘制折线

自v3.6.0版本起,扩展了折线多段颜色绘制能力:增加支持分段纹理绘制。

纹理素材格式:纹理图片须是正方形,宽高是2的整数幂,如64*64,否则无效;若设置了纹理图片,设置线颜色、连接类型和端点类型将无效。

注意:目前仅支持对折线设置纹理,其余覆盖物目前暂不支持设置纹理。

构造PolylineOptions对象,添加折线分段颜色绘制覆盖物,核心代码如下:

//构建折线坐标点

LatLng p111 = new LatLng(39.865, 116.444);
        LatLng p211 = new LatLng(39.825, 116.494);
        LatLng p311 = new LatLng(39.855, 116.534);
        LatLng p411 = new LatLng(39.805, 116.594);
        List<LatLng> points11 = new ArrayList<LatLng>();
        points11.add(p111);
        points11.add(p211);
        points11.add(p311);
        points11.add(p411);

//添加纹理图片

        List<BitmapDescriptor> textureList = new ArrayList<BitmapDescriptor>();
        textureList.add(mRedTexture);
        textureList.add(mBlueTexture);
        textureList.add(mGreenTexture);
        List<Integer> textureIndexs = new ArrayList<Integer>();
        textureIndexs.add(0);
        textureIndexs.add(1);
        textureIndexs.add(2);

//构造PolylineOptions对象,并绘制  
    
OverlayOptions ooPolyline11 = new PolylineOptions().width(20)
          .points(points11).dottedLine(true).customTextureList(textureList).textureIndex(textureIndexs);
        mTexturePolyline = (Polyline) mBaiduMap.addOverlay(ooPolyline11);