Skip to content

基础导航示例

学习如何初始化导航系统并开始导航。

完整代码

typescript
import { initNavSystem } from '@sightp/tiny-allinone'

// 1. 配置参数
const setting = {
  id: 'demo-map',
  requestRoute: async (params) => {
    console.log('请求路算:', params)
    
    // 模拟路算服务响应
    return {
      route: [
        { x: 0, y: 0, z: 0 },
        { x: 10, y: 0, z: 10 },
        { x: 20, y: 0, z: 20 },
        { x: 30, y: 0, z: 15 },
      ],
      markers: [
        { id: 'm1', x: 10, y: 0, z: 10, action: 0 },
        { id: 'm2', x: 20, y: 0, z: 20, action: 2 },
        { id: 'm3', x: 30, y: 0, z: 15, action: 7 },
      ]
    }
  },
  routeWidth: 6,
  arriveRadious: 5,
  drawPathLength: -1,
}

// 2. 初始化
const navManager = initNavSystem(pc, app, setting)

// 3. 监听事件
navManager.on('nav_start', (target) => {
  console.log('导航开始:', target)
})

navManager.on('nav_message', (msg) => {
  console.log(`距离终点: ${msg.distanceToEnd.toFixed(1)}米`)
})

navManager.on('nav_arrive', () => {
  console.log('🎉 到达目的地!')
})

navManager.on('nav_deviate', () => {
  console.log('⚠️ 偏离路线,正在重新规划...')
})

// 4. 开始导航
const target = {
  id: 'target-1',
  x: 30,
  y: 0,
  z: 15,
}

navManager.startNav(target)

// 5. 取消导航(可选)
// navManager.cancelNav()

效果预览

导航开始
距离终点: 45.2米
距离终点: 40.1米
...
🎉 到达目的地!

下一步

Released under the MIT License.