您现在的位置:

实时导航

实时导航,也可以称为GPS导航,是通过连续的GPS定位信息来驱动进行的导航,用于实际的导航过程。在路线规划成功以后(驾车或步行),就可以开始导航了。示例代码如下:

  1. (完整代码详见 SDKDemo 工程的 MBNaviController.m
  2. // 实时导航
  3. if (naviMapView == nil) {
  4. // 地图不存在
  5. naviMapView=[[MBMapView alloc]initWithFrame:(0,120.0,kMainScreenSizeWidth, kMainScreenSizeHeight - 120.0 - 55.0)];
  6. [self.view addSubview:naviMapView];
  7. // 创建车标图层
  8. MBModelOverlay *car = [[MBModelOverlay alloc] initWithFilePath:@"res/red_car.obj"];
  9. carHead = MBNaviHeadNorthUp;
  10. }
  11. // 初始化导航模块
  12. MBNaviSession *naviSession = [MBNaviSession sharedInstance];
  13. naviSession.enableSound = YES;
  14. naviSession.delegate = self;
  15. // 路线计算完成的回调函数
  16. - (void)naviSessionResult:(MBRouteCollection *)routes {
  17. // 算路完成
  18. // 得到routes集合,此集合中的routeBases,在发起导航获取数据时需用到
  19. for (MBOverlay *overlay in naviMapView.overlays) {
  20. [naviMapView removeOverlay:overlay];
  21. }
  22. if (routes.routeBases.count > 0) {
  23. MBRouteOverlay *routeOverlay = nil;
  24. for (MBRouteBase *base in routes.routeBases) {
  25. routeOverlay = [[MBRouteOverlay alloc] initWithRoute:base.getRouteBase];
  26. routeOverlay.clickEnable = YES;
  27. [naviMapView addOverlay:routeOverlay];
  28. }
  29. }
  30. }
  31. - (void)naviSessionTracking:(MBNaviSessionData *)sData {
  32. NSLog(@"当前车的位置:%d,%d",sData.carPos.x,sData.carPos.y);
  33. NSLog(@"当前车头朝向:%ld",(long)sData.carOri);
  34. NSLog(@"当前建议比例尺:%ld",(long)sData.suggestedMapScale);
  35. NSLog(@"是否有下一个转弯:%@,还有%ld米转弯",sData.hasTurn?@"是":@"没有",(long)sData.turnIconDistance);
  36. NSLog(@"当前转向标ID:%ld",(long)sData.turnIcon);
  37. NSLog(@"转弯之后的道路名称:%@",sData.nextRoadName);
  38. NSLog(@"当前所在道路名称:%@",sData.roadName);
  39. NSLog(@"\n");
  40. }
返回顶部