android地图sdk | 百度地图api sdk-凯发k8官方旗舰厅

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
绘制线
下载开发文档

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

绘制折线

通过polylineoptions类来设置折线的属性,绘制折线的示例代码如下:

//构建折线点坐标
latlng p1 =newlatlng(39.97923,116.357428);
latlng p2 =newlatlng(39.94923,116.397428);
latlng p3 =newlatlng(39.97923,116.437428);
list<latlng> points =newarraylist<latlng>();
points.add(p1);
points.add(p2);
points.add(p3);
//设置折线的属性
overlayoptions moverlayoptions =newpolylineoptions()
.width(10)
.color(0xaaff0000)
.points(points);
//在地图上绘制折线
//mployline 折线对象
overlay mpolyline = mbaidumap.addoverlay(moverlayoptions);

绘制效果如图:

绘制折线

polylineoptions包含多种可供设置的属性。常用属性如下:

名称说明
color折线颜色
width折线宽度
points折线坐标点列表
colorsvalues分段折线颜色值列表
customtexture折线自定义纹理
customtexturelist分段折线纹理列表
textureindex分段纹理绘制纹理索引
visible折线是否可见
extrainfo折线额外信息
绘制虚线

先绘制普通折线,然后可以通过两种方式来绘制虚线。

通过polylineoptions设置

//设置折线的属性
overlayoptions moverlayoptions =newpolylineoptions()
.width(10)
.color(0xaaff0000)
.points(points)
.dottedline(true);//设置折线显示为虚线

通过polyline对象设置

//设置折线显示为虚线
((polyline) mpolyline).setdottedline(true);
分段颜色绘制折线

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

//构建折线点坐标
list<latlng> points =newarraylist<latlng>();
points.add(newlatlng(39.965,116.404));
points.add(newlatlng(39.925,116.454));
points.add(newlatlng(39.955,116.494));
points.add(newlatlng(39.905,116.554));
points.add(newlatlng(39.965,116.604));
list<integer> colors =newarraylist<>();
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 moverlayoptions =newpolylineoptions()
.width(10)
.color(0xaaff0000)
.points(points)
.colorsvalues(colors);//设置每段折线的颜色
//在地图上绘制折线
//mployline 折线对象
overlay mpolyline = mbaidumap.addoverlay(moverlayoptions);

显示效果如图:

折线对象
分段纹理绘制折线

自v3.6.0起,扩展了折线多段颜色绘制能力:增加支持分段纹理绘制。纹理素材格式:纹理图片宽高须是2的整数幂,如16*64,否则绘制可能有问题;若设置了纹理图片,折线颜色将无效。分段纹理绘制折线时建议开启绘制虚线。
注意:目前仅支持对折线设置纹理,其余覆盖物目前暂不支持设置纹理。

示例代码如下:

//构建折线点坐标
list<latlng> points =newarraylist<latlng>();
points.add(newlatlng(39.865,116.444));
points.add(newlatlng(39.825,116.494));
points.add(newlatlng(39.855,116.534));
points.add(newlatlng(39.805,116.594));
//添加纹理图片
list<bitmapdescriptor> texturelist =newarraylist<>();
texturelist.add(mredtexture);
texturelist.add(mbluetexture);
texturelist.add(mgreentexture);
//添加纹理索引
list<integer> indexlist =newarraylist<>();
indexlist.add(0);
indexlist.add(1);
indexlist.add(2);
//设置折线的属性
overlayoptions moverlayoptions =newpolylineoptions()
.width(20)
.dottedline(true)
.points(points)
.customtexturelist(texturelist)
.textureindex(indexlist);//设置纹理列表
//在地图上绘制折线
//mployline 折线对象
overlay mpolyline = mbaidumap.addoverlay(moverlayoptions);

显示效果如图:

polyline的点击事件

点击polyline会回调baidumap.onpolylineclicklistener接口的onpolylineclick方法。
示例代码如下:

baidumap.onpolylineclicklistener listener =newbaidumap.onpolylineclicklistener(){
//处理polyline点击逻辑
@override
public boolean onpolylineclick(polyline polyline){
toast.maketext(polylinedemo.this,"click on polyline",toast.length_long).show();
returntrue;
}
};
//设置polyline点击监听器
mbaidumap.setonpolylineclicklistener(listener);

显示效果如图:

polyline大地曲线

通过polylineoptions类来设置大地曲线的属性,示例代码如下:

latlng latlngaaaa =newlatlng(36.53,-121.47);
latlng latlngbbbb =newlatlng(22.33,114);
list<latlng> pointss =newarraylist<latlng>();
pointss.add(latlngaaaa);
pointss.add(latlngbbbb);
// 覆盖物参数配置
overlayoptions oogeopolyline =newpolylineoptions()
// 大地曲线
.isgeodesic(true)
.width(mwidth)
// 折线经度跨180需增加此字段
.linedirectioncross180(polylineoptions.linedirectioncross180.from_west_to_east)
.points(pointss);// 折线坐标点列表 数目[2,10000],且不能包含 null
// 添加覆盖物
mgeopolyline =(polyline) mbaidumap.addoverlay(oogeopolyline);

显示效果如图:

polyline大地曲线
polyline渐变色

通过polylineoptions类来设置polyline渐变色的属性,示例代码如下:

latlng latlnguu =newlatlng(40.065,116.444);
latlng latlngvv =newlatlng(40.025,116.494);
latlng latlngww =newlatlng(40.055,116.534);
latlng latlngxx =newlatlng(40.005,116.594);
latlng latlngyy =newlatlng(40.065,116.644);
list<latlng> pointsgradientlist =newarraylist<latlng>();
pointsgradientlist.add(latlnguu);
pointsgradientlist.add(latlngvv);
pointsgradientlist.add(latlngww);
pointsgradientlist.add(latlngxx);
pointsgradientlist.add(latlngyy);
// 折线每个点的颜色值
list<integer> colorvalue =newarraylist<integer>();
colorvalue.add(0xaaff0000);
colorvalue.add(0xaa00ff00);
colorvalue.add(0xaa0000ff);
colorvalue.add(0xaa00ff00);
colorvalue.add(0xaaff0000);
// 覆盖物参数配置
overlayoptions oopolylineg =newpolylineoptions()
.width(mwidth)// 设置折线线宽, 默认为 5, 单位:像素
.isgradient(true)// 渐变色折线
.points(pointsgradientlist)// 设置折线坐标点列表
.colorsvalues(colorvalue);// 设置折线每个点的颜色值,每一个点带一个颜色值,绘制时按照索引依次取值每
// 添加覆盖物
mgradientpolyline =(polyline) mbaidumap.addoverlay(oopolylineg);

显示效果如图:

polyline渐变色
polyline发光

自v7.5.7版本起,android地图sdk支持polyline类发光效果,支持两种模式的发光效果 设置代码如下:

/**
* 设置发光模式 默认不发光
* @param linebloomtype
* @return
*/
publicpolylineoptionsbloomtype(linebloomtype linebloomtype)
/**
* 设置发光下的宽度,默认线段宽度 * 2
* @param width
* @return
*/
publicpolylineoptionsbloomwidth(int width)
/**
* 设置发光透明度(0~255) 默认线段透明度
* @param alpha
* @return
*/
publicpolylineoptionsbloomalpha(int alpha)
/**
* 设置透明度渐变发光效果的渐变速率(1.0 ~ 10.0)默认5.0f
* @param speed
* @return
*/
publicpolylineoptionssetbloomgradientaspeed(float speed)
/**
* 设置模糊发光效果的模糊次数(1~10次) 默认1次
* @param times
* @return
*/
publicpolylineoptionssetbloomblurtimes(int times)

效果如下:
渐变发光:

polyline发光

模糊发光:

模糊发光

上一篇

绘制点标记

下一篇

绘制弧线和面

本篇文章对您是否有帮助?

网站地图