百度地图API(二)轨迹回放

回到项目需求上来:做一个设备轨迹回放功能

demo数据分析:

因为我只是做一个demo,所以设计到时间、设备查询就不做了,直接做一组假坐标数据

// 初始化
var map = new BMap.Map("map_demo"); // 创建Map实例
map.centerAndZoom(new BMap.Point(113.953162, 22.532701), 16); // 初始化地图,设置中心点坐标和地图级别
map.setCurrentCity("高新园"); // 设置地图中心显示的城市 new!
map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
map.addControl(new BMap.NavigationControl()); //缩放按钮

//获取到的坐标点
var arrPoints = [
    new BMap.Point(113.960623, 22.546082), new BMap.Point(113.958197, 22.544029),
    new BMap.Point(113.956526, 22.543245), new BMap.Point(113.953562, 22.544563),
    new BMap.Point(113.954263, 22.546749)
];
功能分析

1、首先得有画折线功能
2、有标注移动功能
3、不间断的画折线,使用setTimeout()
4、地图中心要随折线中心移动

//画折线
function driveline(points) {
    map.addOverlay(new BMap.Polyline(points, {
        strokeColor: "black",
        strokeWeight: 5,
        strokeOpacity: 1
    }));
}
//根据点信息实时更新地图显示范围,让轨迹完整显示。设置新的中心点和显示级别
function setZoom(bPoints) {
    var view = map.getViewport(eval(bPoints));
    // var mapZoom = view.zoom;
    var centerPoint = view.center;
    map.centerAndZoom(centerPoint, 16);
}

var i = 0,
    points = [];
//执行方法
function dynamicLine() {
    if (i == arrPoints.length) return;
    var mkr = new BMap.Marker(arrPoints[i]);
    map.addOverlay(mkr); //标点  
    var label = new BMap.Label(arrPoints[i].lng, {
        offset: new BMap.Size(20, -10)
    });
    mkr.setLabel(label);
    points.push(arrPoints[i]);
    setZoom(points)
    driveline(points);
    i++;
    setTimeout(dynamicLine, 1000);
}
//绑定事件
$(function () {
    $('#play').bind('click', function () {
        dynamicLine()
    })
})
demo效果

demo

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值