三维场景模拟导航
根据路径规划结果,进行第一人称或第三人称的模拟导航
第一步,路径规划(以下代码都要在三维场景加载完成后调用map.on('loadComplete')
包括导航对象实例创建,起点终点选择,画导航线等等。(同路径规划步骤)
第二步,确定模拟导航参数
//导航对象初始化时,有多个参数作用于模拟导航时的表现。详细解释如下:
//初始化导航对象
var navi = new esmap.ESNavigation({
map: map,
locationMarkerUrl: 'image/pointer.png', //定位标注图片地址
locationMarkerSize: 150, //定位标注尺寸大小
speed: 5, //模拟导航速度
followAngle: true, //三维场景是否跟随旋转
followPosition: true, //三维场景视角是否跟随位置
followGap:3, //导航视角跟随间隔(单位:/s)
tiltAngle: 30, //模拟导航时的倾斜角
audioPlay:true, //是否开启语音播报
// scaleLevel:0, //模拟导航时的放大等级
// mode:2, //mode=1:人行(默认),mode=2:车行
offsetHeight: 1, //定位标注的高度
ladderType:1, //跨层方案选择。1:距离最近(默认),2:电梯 3.楼梯 4.扶梯
maxEnd:1, //离终点1米时候就结束导航
tipDistance:3,//拐弯处提前多少米播报转弯语音
reRouteDis:10,//偏差10米就进行重新路径规划
// 设置导航线的样式
lineStyle: {
color: '#33cc61',
//设置线为导航线样式
lineType: esmap.ESLineType.ESARROW,
// lineType: esmap.ESLineType.FULL,
lineWidth: 6, // 设置导航线的宽度
offsetHeight: 0.5, // 设置导航线的高度
smooth: true, // 设置导航线的转角线平滑效果
seeThrough: false, // 设置导航线的穿透楼层地板总是显示的效果
//radiusSegments: 2, // 控制线性圆扁
noAnimate: false, // 设置导航线的动画效果
//设置边线的颜色
// godEdgeColor: '#920000',
//设置箭头颜色
// godArrowColor: "#ff0000",
},
// scaleAnimate: true, //导航开始后三维场景放大的过渡效果
// isMultiFloors: false, //跨楼层导航时是否自动切换、改变聚焦楼层
});
第三步,路径规划成功之后,开始导航
//下句解决IOS苹果手机不能播放问题,不能删除
if(navi.mode==2)
map.ESAudioTool.playSoundByName('startCarNaving')//开始车行导航
else
map.ESAudioTool.playSoundByName('startNaving') //步行导航开始
//导航开始
navi.simulate();
//暂时停止导航
navi.pause = true;
//继续导航
navi.pause = false;
高级功能
监听导航进行中事件
navi.on("walking",function(e){
//e:模拟导航数据
})
监听导航完成事件
navi.on("complete",function(){
console.log("模拟导航结束")
})
监听导航提示事件
navi.on('naviTip',function(message){
//导航提示回调
})
监听跨楼层事件
navi.on("crossFloor", function (e) {
//e:楼层号
})
监听重新规划路径事件
navi.on('reRouting',function(){
//重新规划路径
})