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

Android 7.4.0 起支持动态轨迹绘制,开发者可以提供轨迹数据,来动态展示轨迹。支持监听轨迹绘制状态。

绘制动态轨迹
1、通过TraceOptions类来设置轨迹的属性。

示例代码如下:

TraceOptions traceOptions = new TraceOptions();
traceOptions.animationTime(5000);
traceOptions.animate(true);
traceOptions.animationType(TraceOptions.TraceAnimateType.TraceOverlayAnimationEasingCurveLinear);
traceOptions.color(0xAAFF0000);
traceOptions.width(10);
traceOptions.points(getTraceLocation());
2、绘制动态轨迹并监听轨迹绘制状态。

示例代码如下:

mBaiDuMap.addTraceOverlay(traceOptions, new TraceAnimationListener() {
@Override
public void onTraceAnimationUpdate(int percent) {
// 轨迹动画更新进度回调
}
@Override
public void onTraceUpdatePosition(LatLng position) {
// 轨迹动画更新的当前位置点回调
}
@Override
public void onTraceAnimationFinish() {
// 轨迹动画结束回调
}
});

绘制效果如图:

动态轨迹
3、绘制轨迹动画图标。

自V7.5.4起,支持轨迹动画图标。开发者可自定义动画图标,图标跟随动态轨迹平滑移动。
示例代码如下:

// 创建轨迹对象
TraceOptions traceOptions = initTraceOptions();
// 创建图标
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.marker_blue);
// 设置轨迹动画图标并让图标平滑移动
traceOptions.icon(bitmap).setPointMove(true);
// 添加轨迹动画
mTraceOverlay = mBaiDuMap.addTraceOverlay(traceOptions, this);

注:必须调用setPointMove(true)方法才能看到轨迹动画图标
绘制效果如图:

4、渐变轨迹线

自v7.5.7版本起,动态轨迹支持为每个轨迹点配置颜色来实现渐变轨迹效果。通过TraceOptions的来useColorArray方法来开启,传入int类型十六进制的颜色数组。(例如 0xFF0000FF 代表透明度为255的蓝色 ,从左至右,每两位分别代表argb)
注:开启渐变效果后关闭轨迹线的抽稀和平滑效果。
代码如下:

TraceOptions traceOptions = initTraceOptions();
...
traceOptions.useColorArray(true);
traceOptions.colors(arrColor);
/**
* 模拟轨迹点
*/
private static final LatLng[] latlngs = new LatLng[]{
new LatLng(40.055826, 116.307917), new LatLng(40.055916, 116.308455), new LatLng(40.055967, 116.308549),
new LatLng(40.056014, 116.308574), new LatLng(40.056440, 116.308485), new LatLng(40.056816, 116.308352),
new LatLng(40.057997, 116.307725), new LatLng(40.058022, 116.307693), new LatLng(40.058029, 116.307590),
new LatLng(40.057913, 116.307119), new LatLng(40.057850, 116.306945), new LatLng(40.057756, 116.306915),
new LatLng(40.057225, 116.307164), new LatLng(40.056134, 116.307546), new LatLng(40.055879, 116.307636),
new LatLng(40.055826, 116.307697),
};
/**
* 每个元素对应一个轨迹点的颜色
* 注:轨迹点和颜色的数量必须保持一致
*/
private static final int[] arrColor = new int[]{
0xAA0000FF,0xAA00FF00,0xAAFF0000,
0xAA0000FF,0xAA00FF00,0xAAFF0000,
0xAA0000FF,0xAA00FF00,0xAAFF0000,
0xAA0000FF,0xAA00FF00,0xAAFF0000,
0xAA0000FF,0xAA0000FF,0xAA00FF00,
0xAAFF0000,
};

效果如图:

模拟轨迹点
5、轨迹线类发光效果

动态轨迹支持轨迹线的发光效果,开发者可通过TraceOptions的来setTrackBloom方法来开启,并可通过setBloomSpeed来控制轨迹的发光宽度。
代码如下:

/**
* 设置轨迹线发光
* @param isTrackBloom
* @return
*/
public TraceOptions setTrackBloom(boolean isTrackBloom)
/**
* 轨迹发光参数 (1.0f~10.0f 默认5.0f)
* @param bloomSpeed
* @return
*/
public TraceOptions setBloomSpeed(float bloomSpeed)

效果如图:

轨迹线发光
6、动态轨迹终点支持使用模型

开发者可通过TraceOptions的来icon3D方法来开启。目前支持.obj和.gltf的模型。同时,.gltf模型支持播放动画。
代码如下:

TraceOptions traceOptions = initTraceOptions();
...
traceOptions.setPointMove(true);
traceOptions.icon3D(init3DModelOptions());
/**
* 配置3D模型参数.暂时只支持.obj/.gltf格式
*/
private BM3DModelOptions init3DModelOptions(){
//3d模型轨迹点只支持如下设置
BM3DModelOptions bm3DModelOptions = new BM3DModelOptions();
///路径和名称为必填项
bm3DModelOptions.setModelPath(parentPath + "/model3D");
bm3DModelOptions.setScale(20.0f);
// bm3DModelOptions.setZoomFixed(false);
//文件后缀名也需要一起传入
bm3DModelOptions.setModelName("CesiumMan.gltf");
bm3DModelOptions.setBM3DModelType(BM3DModelOptions.BM3DModelType.BM3DModelTypeglTF);
bm3DModelOptions.setSkeletonAnimationEnable(true);
bm3DModelOptions.animationSpeed(2.0f);
bm3DModelOptions.animationRepeatCount(0);
//调整模型位置
bm3DModelOptions.setYawAxis(BM3DModelOptions.ModelYawAxis.Z);
bm3DModelOptions.setRotate(0f,0f,0.0f);
bm3DModelOptions.setOffset(0.0f,0.0f,-100.0f);
return bm3DModelOptions;
}

效果如下:

7、动态轨迹支持暂停

开发者可以通过TraceOverlay的pause()方法暂停轨迹,resume()方法恢复轨迹播放

效果如下:

上一篇

绘制3D模型

下一篇

绘制3D动态轨迹

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