// 初始化导航对象
var navi = new esmap.ESNavigation({
locationMarkerUrl: 'image/pointer.png', // 定位标注图片地址
locationMarkerSize: 150, // 定位标注图片大小
speed: 5, // 模拟导航速度
maxEnd: 5, // 距离终点多少米时结束导航(单位: 米/m)
followAngle: true, // 三维场景视角是否跟随旋转方向
followPosition: true, // 三维场景视角是否跟随位置移动
followGap: 3, // 导航视角跟随间隔(单位: 秒/s)
scaleAnimate: true, // 模拟导航时是否自动缩放及移动到合适视角
tiltAngle: 30, // 模拟导航时的倾斜角
audioPlay: true, // 是否开启语音播报
offsetHeight: 1, // 模拟导航时三维场景的缩放等级
ladderType: 1, // 跨层方案选择(其他选项参考下表)
tipDistance: 3, // 拐弯处提前多少米播报转弯语音(单位: 米/m)
reRouteDis: 10, // 偏差多少米就进行重新路径规划(单位: 米/m)
linkStartEnd: false // 设置导航时起点终点是否连接导航线
showMultiFloor: true // 第三人称导航时是否展示多楼层 (2024-04-18新增加参数)
});
参数说明:
参数 | 说明 | 类型 | 可选值 | 默认值 | 是否必填 |
---|---|---|---|---|---|
map | 三维场景对象,默认当前的三维场景对象 | —— | —— | —— | 否 |
locationMarkerUrl | 定位标注图片地址(开启导航轨迹的时候才会显示的标注图片) | String | —— | —— | 否 |
locationMarkerSize | 定位标注图片尺寸大小 | Number | —— | —— | 否 |
speed | 模拟导航速度 | Number | —— | 4 | 否 |
maxEnd | 离终点多少米时候就结束导航(单位: 米/m) | Number | —— | 2 | 否 |
followAngle | 三维场景是否跟随旋转 | Boolean | —— | false | 否 |
followPosition | 三维场景视角是否跟随位置 | Boolean | —— | false | 否 |
followGap | 导航视角跟随间隔(单位: 秒/s,followPosition为true时有效) | Number | —— | 3 | 否 |
scaleAnimate | 模拟导航时是否自动缩放及移动到合适视角(followPosition为true时有效) | Boolean | —— | true | 否 |
tiltAngle | 模拟导航时的倾斜角 | Number | —— | 80 | 否 |
audioPlay | 是否开启语音播报 | Boolean | —— | false | 否 |
scaleLevel | 模拟导航时三维场景的缩放等级 | Number | —— | 1 | 否 |
mode | 导航模式 | Number | 1 (人行)2 (车行) | 1 | 否 |
offsetHeight | 定位标注图片的高度 | Number | —— | 1 | 否 |
ladderType | 跨层方案选择 | Number | 1 (距离最近)2 (电梯)3 (楼梯)4 (扶梯) | 1 | 否 |
tipDistance | 拐弯处提前多少米播报转弯语音(单位: 米/m) | Number | —— | 6 | 否 |
reRouteDis | 偏差多少米就进行重新路径规划(单位: 米/m) | Number | —— | —— | 否 |
linkStartEnd | 设置导航时起点终点是否连接导航线 | Boolean | —— | true | 否 |
lineStyle | 路径规划线样式配置 | Object | —— | —— | 否 |
showMultiFloor | 第三人称导航时是否展示多楼层(2024-04-18新增加参数) | Boolean | —— | false | 否 |
var fnum = building.getFloorNumByName('F1'); // 通过楼层名称来获取三维场景内部层数
// 确定起点
navi.setStartPoint({
name: '起点1',
x: map.center.x + 10,
y: map.center.y + 10,
fnum: 1, // 楼层
height: 10, // 起点距离地面的高度
url: './image/start.png', // 图片路径,
size: 64, // 图片尺寸
showLevel: 23, // 到达三维场景缩放等级隐藏导航对象
// text: '起点位置', // 场景中展示的文字内容
// textStyle:{
// fontSize: 20, // 字体大小
// fillStyle: '#ff0000', // 填充色
// }
// imageStyle:{
// scale: 1, // 单独设置图片缩放比例
// },
// callback: (marker)=> {
// console.log(marker) // 输出起点实例
// }
});
// 确定终点
navi.setEndPoint({
name: '终点1',
x: map.center.x - 10,
y: map.center.y - 10,
fnum: 1,
height: 10,
url: './image/end.png',
size: 64,
showLevel: 23,
// text: '终点位置',
// textStyle:{
// fontSize: 20,
// fillStyle: '#ff0000',
// }
// imageStyle:{
// scale: 1,
// },
// callback: (marker)=> {
// console.log(marker)
// }
});
// 画导航线
navi.getRouteResult({
drawRoute: true,
})
// 根据导航的模式选择语音播报
if(navi.mode == 1){
map.ESAudioTool.playSoundByName('startNaving') // 开始步行导航
}else{
map.ESAudioTool.playSoundByName('startCarNaving') // 开始车行导航
}
// 导航开始
navi.simulate();
navi.pause = true; // 暂时停止导航
navi.pause = false; // 继续导航
navi.stop() // 停止导航
navi.clearAll() // 清空所有有关模型与效果
navi.reset() // 重新规划导航路线,建议先调用stop方法停止导航再调用reset方法
navi.getRouteResult({
drawRoute: true,
}) // 绘制导航路线,如果修改了起点或者终点,必须重新调用getRouteResult方法
navi.simulate(); // 模拟导航开始
navi.on('walking', function(data){
// data为模拟导航数据
console.log(data)
});
navi.on('complete',function(){
console.log('模拟导航结束')
});
navi.on('naviTip',function(message){
// 导航提示回调
});
navi.on('crossFloor', function (e) {
// e为楼层号
console.log(e)
});
navi.on('reRouting',function(){
// 重新规划路径
});