Location:

Simulated Navigation

Analog navigation, used only for indoor simulations, to help you understand some of the conditions of a given route in advance.

The implementation method of simulated navigation is basically the same as real-time navigation. The difference is that the path planning successfully calls the startSimulation method after obtaining the current planned route.

            (For complete code, see MBNaviController.m in the SDKDemo project)
            // real-time navigation
            if (naviMapView == nil) {
                // Map does not exist
                naviMapView=[[MBMapView alloc]initWithFrame:(0,120.0,kMainScreenSizeWidth, kMainScreenSizeHeight - 120.0 - 55.0)];
                [self.view addSubview:naviMapView];
                // Create a car logo layer
                MBModelOverlay *car = [[MBModelOverlay alloc] initWithFilePath:@"res/red_car.obj"];
                carHead = MBNaviHeadNorthUp;

            }
            // Initialize the navigation module
            MBNaviSession *naviSession = [MBNaviSession sharedInstance];
            naviSession.enableSound = YES;
            naviSession.delegate = self;
            // Callback function completed by route calculation
            - (void)naviSessionResult:(MBRouteCollection *)routes {
                // Calculate the road to complete
                // Get the routes collection, the routeBases in this collection, need to use when initiating navigation to obtain data
                for (MBOverlay *overlay in naviMapView.overlays) {
                        [naviMapView removeOverlay:overlay];
                }
                if (routes.routeBases.count > 0) {
                    MBRouteOverlay *routeOverlay = nil;
                    for (MBRouteBase *base in routes.routeBases) {
                        routeOverlay = [[MBRouteOverlay alloc] initWithRoute:base.getRouteBase];
                        routeOverlay.clickEnable = YES;
                        [naviMapView addOverlay:routeOverlay];
                    }
                } 
                [naviSession startSimulation];
            }
            - (void)naviSessionTracking:(MBNaviSessionData *)sData {
                NSLog (@"current car location: %d, %d", sData.carPos.x, sData.carPos.y);
                NSLog (@"current head orientation: %ld", (long) sData.carOri);
                NSLog (@"current recommended scale: %ld", (long) sData.suggestedMapScale);
                NSLog (@" Is there a next turn: %@, and %ld meters turn", sData.hasTurn?@"Yes": @"No", (long)sData.turnIconDistance);
                NSLog(@"current steering ID: %ld", (long)sData.turnIcon);
                NSLog (@"Road name after turn: %@", sData.nextRoadName);
                NSLog (@"current road name: %@", sData.roadName);
                NSLog(@"\n");
            }
        
TOP