HERE Maps Distance to Destination всегда возвращает высокое значение

Я рассчитал маршрут на картах и ​​запустил пошаговую навигацию, используя этот маршрут. Все работает нормально в автономном режиме, и когда я попытался рассчитать расстояние до пункта назначения, используя

double distance = [NMANavigationManager sharedNavigationManager].distanceToDestination; 

Вышеупомянутый метод вернул очень высокое значение, например 184467440737095520000. Возвращаемое значение всегда 184467440737095520000 даже для разных маршрутов. когда я обратился к делегату диспетчера навигации, я обнаружил, что этот метод возвращает значения в метрах. Но даже это возвращаемое значение слишком велико для расстояния до пункта назначения .. Пожалуйста, расскажите мне, как правильно рассчитать расстояние до пункта назначения .. Заранее спасибо

-(void)CalculateRoute:(NMARoutingMode *)routingMode
{

routeManager = [NMARouteManager sharedRouteManager];
routeManager.delegate = self;
NSMutableArray* stopList = [NSMutableArray array];
[stopList addObject:_StartCoordinate];
[stopList addObject:_DestinationCoordinate];

NSLog(@"routing from [%.5f,%.5f] to [%.5f,%.5f]", ((NMAGeoCoordinates*)stopList[0]).latitude, ((NMAGeoCoordinates*)stopList[0]).longitude,
      ((NMAGeoCoordinates*)stopList[1]).latitude, ((NMAGeoCoordinates*)stopList[1]).longitude);
NSLog(@"routingMode===>%@",routingMode.description);


[routeManager calculateRouteWithStops:stopList routingMode:routingMode];
 }


-(IBAction)StartNav:(UIButton*)sender
{
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(positionDidUpdate)
                                             name:NMAPositioningManagerDidUpdatePositionNotification

                                           object:[NMAPositioningManager sharedPositioningManager]];
[NMANavigationManager sharedNavigationManager].map = self.mapView;
[NMANavigationManager sharedNavigationManager].delegate = self;
[NMANavigationManager sharedNavigationManager].mapTrackingAutoZoomEnabled = YES;
[NMANavigationManager sharedNavigationManager].mapTrackingEnabled = YES;
[NMANavigationManager sharedNavigationManager].mapTrackingOrientation = NMAMapTrackingOrientationDynamic;
[NMANavigationManager sharedNavigationManager].speedWarningEnabled = YES;
[NMANavigationManager sharedNavigationManager].mapTrackingTilt = NMAMapTrackingTilt2D;
[[NMANavigationManager sharedNavigationManager]startTurnByTurnNavigationWithRoute:_route];
}

person Mohanraj    schedule 09.01.2016    source источник


Ответы (2)


Вы получаете сообщение об ошибке при вычислении расстояния. Значение 184467440737095520000 равно константе NMANavigationManagerInvalidValue.

Попробуйте вычислить расстояние при обновлении вашей позиции, поэтому сделайте это в своем методе positionDidUpdate, как вы упомянули:

double distance = [NMANavigationManager sharedNavigationManager].distanceToDestination;

Если вы хотите сделать это в первый раз после вызова метода startTurnByTurnNavigationWithRoute, вы должны получить такую ​​информацию из маршрута:

double distance = _route.length;

Кстати, если вы попытаетесь сделать то же самое с timeToArrival, вы тоже получите высокое значение.

person BernatC    schedule 05.12.2017

distanceToDestination не является значением double. Это значение unsigned long long или значение NMAUint64.

Сделайте следующее:

unsigned long long distance = [NMANavigationManager sharedNavigationManager].distanceToDestination; 

or

NMAUint64 distance = [NMANavigationManager sharedNavigationManager].distanceToDestination; 
person Burhanuddin Sunelwala    schedule 10.02.2016