想通过改变下拉框的值,自定义百度地图路书的播放速度

碎调122 2018-03-14 04:18:36

想通过改下拉框的选中,从而改变速度

代码贴上:
$('#speed').change(function () {//改变下拉框的选中
speeds=$('#speed').val();//下拉框的值

map.clearOverlays();//清除已经画的线
(这里不会写)//清除即将画的线,即停止路书继续画线
play();
})


function play() {
map.setViewport(arrPois);
marker = new BMap.Marker(arrPois[0], {
icon: new BMap.Icon('http://developer.baidu.com/map/jsdemo/img/car.png', new BMap.Size(52, 26), { anchor: new BMap.Size(27, 13) })
});
var label = new BMap.Label("京A30780", { offset: new BMap.Size(0, -30) });
label.setStyle({ border: "1px solid rgb(204, 204, 204)", color: "rgb(0, 0, 0)", borderRadius: "10px", padding: "5px", background: "rgb(255, 255, 255)", });
marker.setLabel(label);

map.addOverlay(marker);
BMapLib.LuShu.prototype._move = function (initPos, targetPos, effect) {
var pointsArr = [initPos, targetPos]; //点数组
var me = this,
//当前的帧数
currentCount = 0,
//步长,米/秒
timer = 10,
step = this._opts.speed / (1000 / timer),
//初始坐标
init_pos = this._projection.lngLatToPoint(initPos),
//获取结束点的(x,y)坐标
target_pos = this._projection.lngLatToPoint(targetPos),
//总的步长
count = Math.round(me._getDistance(init_pos, target_pos) / step);
//显示折线 syj201607191107
this._map.addOverlay(new BMap.Polyline(pointsArr, {
strokeColor: "red",
strokeWeight: 2,
strokeOpacity: 0.5
})); // 画线
//如果小于1直接移动到下一点
if (count < 1) {
me._moveNext(++me.i);
return;
}
me._intervalFlag = setInterval(function () {
//两点之间当前帧数大于总帧数的时候,则说明已经完成移动
if (currentCount >= count) {
clearInterval(me._intervalFlag);
//移动的点已经超过总的长度
if (me.i > me._path.length) {
return;
}
//运行下一个点
me._moveNext(++me.i);
} else {
currentCount++;
var x = effect(init_pos.x, target_pos.x, currentCount, count),
y = effect(init_pos.y, target_pos.y, currentCount, count),
pos = me._projection.pointToLngLat(new BMap.Pixel(x, y));
//设置marker
if (currentCount == 1) {
var proPos = null;
if (me.i - 1 >= 0) {
proPos = me._path[me.i - 1];
}
if (me._opts.enableRotation == true) {
me.setRotation(proPos, initPos, targetPos);
}
if (me._opts.autoView) {
if (!me._map.getBounds().containsPoint(pos)) {
me._map.setCenter(pos);
}
}
}
//正在移动
me._marker.setPosition(pos);
//设置自定义overlay的位置
me._setInfoWin(pos);
}
}, timer);
};
//var speeds = $("speed").val();
//var speeds = 6500;
lushu = new BMapLib.LuShu(map, arrPois, {
defaultContent: "京A30780",//"从天安门到百度大厦"
autoView: true,//是否开启自动视野调整,如果开启那么路书在运动过程中会根据视野自动调整
icon: new BMap.Icon('http://developer.baidu.com/map/jsdemo/img/car.png', new BMap.Size(52, 26), { anchor: new BMap.Size(27, 13) }),
speed: speeds,
enableRotation: true,//是否设置marker随着道路的走向进行旋转
landmarkPois: [
{ lng: 116.306954, lat: 40.05718, html: '加油站', pauseTime: 2 }
]

});
map.centerAndZoom(arrPois[0], 15);//设置初始点为中心
marker.addEventListener("click", function () {
marker.enableMassClear(); //设置后可以隐藏改点的覆盖物
marker.hide();
lushu.start();
//map.clearOverlays(); //清除所有覆盖物
});
//绑定事件
$("run").onclick = function () {
marker.enableMassClear(); //设置后可以隐藏改点的覆盖物
marker.hide();
lushu.start();
// map.clearOverlays(); //清除所有覆盖物
}
$("stop").onclick = function () {
lushu.stop();
map.clearOverlays();
}
$("pause").onclick = function () {
lushu.pause();
}
$("hide").onclick = function () {
lushu.hideInfoWindow();
}
$("show").onclick = function () {
lushu.showInfoWindow();
}
function $(element) {
return document.getElementById(element);
}


}
...全文
524 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
碎调122 2019-05-10
  • 打赏
  • 举报
回复
可查看完整代码:https://blog.csdn.net/qq_34017733/article/details/79564771
引用 2 楼 cheetzyp 的回复:
里面的设置自定义overLay的位置是什么啊me._setInfoWin(pos);
cheetzyp 2019-05-08
  • 打赏
  • 举报
回复
里面的设置自定义overLay的位置是什么啊me._setInfoWin(pos);
碎调122 2018-03-14
  • 打赏
  • 举报
回复
新人求助啊!!!!没有大佬帮忙看看嘛?
代码转载自:https://pan.quark.cn/s/2af55a97eb0f **INA226测试程序参考** 在电子工程和嵌入式系统开发领域,INA226被认为是一款高精度且低功耗的电流与电源监控器,其应用范围广泛,涵盖电池管理系统、电源路径管理以及智能能源监测等多个方面。该芯片由德州仪器(Texas Instruments)负责生产,能够提供精确的电流和电压测量结果,并具备灵活的配置选择。 **INA226芯片功能详解** INA226的核心特性包括: 1. **双向电流测量**:能够测量流经设备的正向电流和反向电流。 2. **高压和低压测量**:支持高达60V的电压测量,同时可以测量从微安到安培范围内的电流。 3. **内置模拟电路**:集成了一个精密运算放大器、一个电流检测放大器以及一个高精度电压基准。 4. **I2C接口**:通过标准的I2C接口与微控制器进行通信,便于读取测量数据。 5. **多种配置模式**:允许选择不同的电流和电压范围,以适应不同应用场景的需求。 6. **低功耗**:在待机状态下,功耗非常低,适合用于电池供电的设备。 **平台IO与ESP8266开发环境** `PlatformIO`是一个开源的跨平台集成开发环境,专注于物联网(IoT)项目的开发。它整合了构建系统、库管理和设备支持,显著简化了嵌入式开发流程。`ESP8266`是由乐鑫科技推出的一款低成本且高性能的Wi-Fi微控制器,常用于智能家居和物联网领域。 在`PlatformIO`中配置和编写针对`ESP8266`的INA226测试程序,需要遵循以下步骤: 1. **安装PlatformIO**:在IDE(例如Visual Studio Code、Atom等...
已经博主授权,源码转载自 https://pan.quark.cn/s/6b24333d46cf 这里所说的激光扫描测距仪的实质就是3D激光雷达。 如上面视频中展现的那样,扫描仪可 以获取各转角情况下目标物体扫描截面到扫描仪的距离,由于这类数据在可视化后看起来像 是由很多小点组成的云团,因此常被称之为:点云(PointClould)。 在获得扫描的点云后,可以在计算机中重现扫描物体/场景的三维信息。 自制激光3D扫描仪的知识点涵盖了多个方面,包括激光雷达的基本概念、激光扫描测距的原理、以及如何低成本实现3D激光扫描。 以下是对这些知识点的详细阐述。 激光雷达是一种通过激光测距获取物体表面信息的设备。 它通常用于机器人导航、3D模型重建和地图测绘等领域。 激光雷达能够获取目标物体在各个转角情况下的扫描截面到扫描仪的距离,并将这些数据可视化成点云(Point Cloud)。 点云是由大量小点组成的三维数据模型,这些小点模拟了物体或场景的三维结构。 在制造激光3D扫描仪时,需要考虑的关键原理包括激光三角测距原理和线状激光进行截面测距的原理。 激光三角测距原理是指通过测量发射激光与反射激光之间的角度差异来确定距离。 而线状激光进行截面测距原理则是指将点状激光改变成线型光束,一次性获得整个扫描截面的数据。 市面上的激光雷达产品价格昂贵,主要因素包括使用高速光学振镜进行大角度扫描、通过计算发射/反射激光束相位差的测距手段、以及矫正算法和人工成本。 但个人DIY自制激光雷达时,可以通过降低对精度和性能的要求来大幅降低成本。 例如,使用三角测距方式替代成本较高的TOF测距方式,或者使用普通电机机构驱动激光器来替代高速振镜。 自制激光3D扫描仪的实现,可以考虑制作一个能够测量一个点的设备,并采用类似的三角测距...

87,987

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧