
# 开发指导
#### 开发流程
开发流程请参考[图1]。
图1开发流程图   
![](https://support.huaweicloud.com/devg-koomap/zh-cn_image_0000001539663576.png)
#### 开发过程
1. 搜索POI。 
   ```
   // 创建获取POI的异步任务栈
   var mPOICloud = new HTPOICloud(); 
   // 将生命周期绑定到unity的生命周期
   mPOICloud.Create("NAVIPOI"); // 参数设置的是线程名
   mPOICloud.Start();
   mPOICloud.Stop();
   mPOICloud.Destroy();
   // 设置系统的基本参数
   mPOICloud.SetParams(HTSystemManager.GetHTSystem().GetAppConfig(), HTSystemManager.GetHTSystem().GetAppEnv(), hostUrl);
   // 设置成功失败的回调监听
   mPOICloud.AddListListener(SelecteDestination);
   mPOICloud.AddErrorListener(OnPoiError);
   // 根据gps获取附近的POI
   double lon = HTSystemManager.GetHTSystem().GetSniffer().GetGpsLocation().mLongitude;
   double lat = HTSystemManager.GetHTSystem().GetSniffer().GetGpsLocation().mLatitude;
   mPOICloud.GetDataList(lon, lat);
   ```
   
   
2. 选定终点。 
   HTNaviManager会自动管理HTNaviSession中导航功能的生命周期，被默认挂载在预制体当中，使用时可以直接通过HTNaviSession的mNavi来调用各种方法。
   ```
   // 导航终点坐标是虚拟世界坐标，可以直接带入POI上返回的坐标
   mNaviSession.mNavi.SetDestination(447763.6348, 4418530.1394, 37.979218);
   ```
   
   
3. 发起导航。 
   ```
   mNaviSession.mNavi.StartNavi();
   ```
   
   
4. 回调监听。 
   ```
   // 导航实时信息监听
   mNaviSession.mNaviInfoListener = OnNaviInfoStatus;
   // 导航失败信息监听
   mNaviSession.mNaviErrorListener = OnNaviError;
   // 进入电梯信息监听
   mNaviSession.mNaviElevatorListener = OnNaviElevator;
   // 方向引导信息监听
   mNaviSession.mNaviDirectionListener = OnNaviDirection;
   // 偏移量信息监听
   mNaviSession.mNaviYawListener = ShowYaw;
   ```
   ![](https://support.huaweicloud.com/devg-koomap/public_sys-resources/note_3.0-zh-cn.png)
   您可在Unity新建工程的"Assets \> HTFoundation \> Samples \> HTFoundationTester \> Scripts"中找到HTNaviCtro.cs并查看参考实例。
   
   
 
