AnsweredAssumed Answered

EsriRuntimeQt::Route::totalKilometers() returns miles, not kilometers?

Question asked by pylgrym on Oct 7, 2015
Latest reply on Nov 19, 2015 by Hishoshr

in 10.2.6, and possibly also 10.2.3, I experience that

EsriRuntimeQt::Route::totalKilometers() 'consistently' returns miles, not kilometers?


Luckily,  ER::GeometryEngine::geodesicLength

seems to give the correct result, or at least the same value I can measure with Google Earth.


In fact, calling route.totalMiles() gives same value that totalKilometers() gives..?


In a way, I'm impressed with ESRI trying to reconcile the age-old difference between metric and imperial units, with this initiative.

I just suspect, that it takes someone on the scale of Napoleon to achieve change on that level.


On the positive side, route.totalMiles() seems to return a correct value, so it's about 50% correct.


I am running off these data:





I am running on msvc2013, 32bit, and based in Europe;

the example was measured in Iceland (on map).


I'm curious if it is related to something in my setup, or if any others experience similar.. Seems like a weird bug people would react to.


My queries look like this:


  bool bLocal = ( !UseEsri::useOnlineRouting() ); //!NodeLinkDlg_Gis::OnlineRoutingHack);

  if (bLocal) {

   #ifdef HACK_10_2_3

   ER::LocalRouteTaskParameters  lparameters = HACK_10_2_6_STAR lroutingTask.defaultParameters();

   #else  // > 10.2.3:

   ER::RouteTaskParameters&   lparameters = HACK_10_2_6_STAR lroutingTask.defaultParameters();

   #endif // HACK_10_2_3


   lparameters.setOutputLines(bWithMeasure ? ER::NAOutputLine::TrueShapeWithMeasure : ER::NAOutputLine::TrueShape);


   lparameters.setStops( HACK_10_2_6_AMP stops);


   lroutingTask.solve( HACK_10_2_6_AMP lparameters);

  } else { // Online:

   #ifdef HACK_10_2_3 // For some reason, >10.2.3 does not allow us to check if routingtask object is correctly initialized?

   if (oroutingTask.isEmpty()) { // bad path to data

   QMessageBox::warning(NULL, QObject::tr("Routing Error"), QObject::tr("The oroutingTask is empty."), QMessageBox::Ok ); // this

   return false;


   #endif // HACK_10_2_3

   // stops.setCompressedRequest(true);

   #ifdef HACK_10_2_3

   ER::OnlineRouteTaskParameters  oparameters = HACK_10_2_6_STAR oroutingTask.defaultParameters();

   #else  // > 10.2.3:

   ER::RouteTaskParameters*   p_oparameters = oroutingTask.defaultParameters(); // HACK_10_2_6_STAR

   if (p_oparameters == NULL) {

   debstr() << "Err: oroutingTask.defaultParameters failed!\n";

   QMessageBox::warning(NULL, QObject::tr("Routing Error"), QObject::tr("oroutingTask.defaultParameters failed."), QMessageBox::Ok );

   return false;


   ER::RouteTaskParameters&   oparameters = *p_oparameters;

   #endif // HACK_10_2_3


   oparameters.setOutputLines(bWithMeasure ? ER::NAOutputLine::TrueShapeWithMeasure : ER::NAOutputLine::TrueShape);


   oparameters.setStops( HACK_10_2_6_AMP stops);

   oroutingTask.solve( HACK_10_2_6_AMP oparameters);