这是我参与8月更文挑战的第7天,活动详情查看:8月更文挑战 我们在很大活动中比如双十一大屏幕等都看见过飞线动画,我们今天一起学习百度地图飞线动画嗷~
使用
commn.js
中的initMap
方法初始化一个地图,前面说过这里我们就省略啦~
3D曲线生成器 BezierCurve
实例化贝塞尔曲线对象(
BezierCurve
) ;这是mapvgl
中的内置工具。
- 实例化贝赛尔曲线
var curve = new mapvgl.BezierCurve();
- 设置起点和终点最标
var startPoint = mapv.utilCityCenter.getCenterByCityName(cities[parseInt(Math.random() * cities.length, 10)]);
var endPoint = mapv.utilCityCenter.getCenterByCityName(cities[parseInt(Math.random() * cities.length, 10)]);
curve.setOptions({
start: [startPoint.lng, startPoint.lat],
end: [endPoint.lng, endPoint.lat]
});
- 生成贝塞尔曲线坐标集 ;使用
getPoints()
方法获取到生成的贝赛尔曲线坐标集。并将其设置到data
数组中。- getPoints 获取生成的曲线坐标集,传入的字段为曲线的分段数,默认值是20 数据有啦,我们就要在地图上加载图层啦
FlyLineLayer
- 用来展示轨迹飞线图层,继承自Layer,创建飞线图层使用的是
FlyLineLayer
对象
var view = new mapvgl.View({map});
- 基于
Threejs
实现,使用前需要额外引入mapvgl.threelayers包
- options
- style normal,默认值,飞线动画速度均匀, chaos,飞线动画速度不均匀
- color 底线颜色,同css颜色
- textureColor 飞线动画颜色,同css颜色
- textureWidth 飞线动画的宽度
- textureLength 飞线动画的长度,占整条线的百分比,取值
0-100
- step 飞线动画的步长,步长越大动画速度越快
var flyLine = new mapvgl.FlyLineLayer({
style: 'chaos',
step: 0.3,
color: 'rgba(33, 242, 214, 0.3)',
textureColor: function (data) {
return data.properties.count > 0.5 ? '#ff0000' : '#56ccdd';
},
textureWidth: 20,
textureLength: 10
})
-
- 使用
mapvgl
中的LineLayer
图层创建线图层。并将其添加到图层管理器中
- 使用
view.addLayer(flyLine)
- 将飞线对象与数据源进行绑定
flyLine.setData(data)
我们来看看最终的效果图吧~请教各位大佬一下怎么做动图啊~~~~