2015-03-04 2 views
1

В настоящее время я разрабатываю приложение для поворота на поворот, и я использую API Skobbler, мне удалось интегрировать, но когда я проводил тесты в реальном времени, я заметил, т получить информацию из обратных вызовов, например:Текущее имя улицы Skobbler, currentAdviceНастроенные и аудиосообщения не работают

-(void)routingService:(SKRoutingService *)routingService didUpdateFilteredAudioAdvices:(NSArray *)audioAdvices{ 

NSLog(@"audio advices: %@",audioAdvices); 

} - (недействительными) RoutingService: (SKRoutingService *) RoutingService didChangeCurrentStreetName: (NSString *) currentStreetName streetType: (SKStreetType) streetType COUNTRYCODE: (NSString *) COUNTRYCODE {

NSLog(@"street name: %@,%d,%@",currentStreetName,streetType,countryCode); 
// NSLog(@"routing service array: %@",routingService.visualAdviceConfigurations); 

} - (Недействительными) RoutingService: (SKRoutingService *) RoutingService didChangeCurrentAdviceImage: (UIImage *) adviceImage withLastAdvice: (BOOL) isLastAdvice {

NSLog(@"image changed"); 
} 
- (void)routingService:(SKRoutingService *)routingService didChangeCurrentAdviceInstruction:(NSString *)currentAdviceInstruction nextAdviceInstruction:(NSString *)nextAdviceInstruction{ 

NSLog(@"current instruction: %@",currentAdviceInstruction); 

}

Единственные обратные вызовы я получаю:

  • (аннулируются) RoutingService: (SKRoutingService *) RoutingService didChangeCurrentSpeed: (двойной) скорость {

    NSLog (@ "скорость:% f", скорость);

} - (Недействительными) RoutingService: (SKRoutingService *) RoutingService didChangeDistanceToDestination: (интермедиат) расстояние withFormattedDistance: (NSString *) formattedDistance {

NSLog(@"distance: %@",formattedDistance); 

}

Спасибо за помощь.

+0

Укажите код, который вы используете для запуска навигационной службы (? Вы навигации по маршруту или просто свободный диск) – Ando

+0

I'am навигацию по маршруту, этот как я это сделал: SKRouteSettings * route = [[SKRouteSettings alloc] init]; route.startCoordinate = CLLocationCoordinate2DMake (userLocation.coordinate.latitude, userLocation.coordinate.longitude); route.destinationCoordinate = CLLocationCoordinate2DMake (48.8215965,2.3715504); [[SKRoutingService sharedInstance] calculateRoute: route]; –

+0

Можете ли вы воспроизвести это поведение в демонстрационном проекте? Например, я смотрю RoutingViewController, и там я получаю все правильные обратные вызовы во время навигации. – Ando

ответ

1

- (void)routingService:(SKRoutingService *)routingService didFinishRouteCalculationWithInfo:(SKRouteInformation*)routeInformation{ NSLog(@"Route is calculated."); [routingService zoomToRouteWithInsets:UIEdgeInsetsZero]; // zooming to currrent route //NSArray *adviceList = [routingService routeAdviceListWithDistanceFormat:SKDistanceFormatMetric]; // array of SKRouteAdvice NSLog(@"routing distance : %d",routeInformation.distance); NSLog(@"routing time : %d",routeInformation.estimatedTime); SKNavigationSettings* navSettings = [SKNavigationSettings navigationSettings]; navSettings.navigationType=SKNavigationTypeReal; navSettings.distanceFormat=SKDistanceFormatMetric; [SKRoutingService sharedInstance].mapView.settings.displayMode = SKMapDisplayMode3D; [[SKRoutingService sharedInstance]startNavigationWithSettings:navSettings]; } Это, как я начала навигации:

+0

Одно замечание - тип навигации установлен на реальный - это означает, что вам действительно нужно будет начать движение по маршруту для вызванных обратных вызовов - если вы хотите запустить симуляцию, используйте navSettings.navigationType = SKNavigationTypeSimulation; – Ando

+0

Использование предоставленного фрагмента кода в нашем демонстрационном приложении работает. См. Раздел https://www.dropbox.com/s/cgfannynp7bhbid/RoutingViewController.m?dl=0 и замените его в демонстрационном приложении. Обратные вызовы также возникают в симуляции и реальной ситуации с драйверами. – Ando