[Marble-devel] Re: RoutingModel.h missing?

Miguel Chavez Gamboa miguel.chavez.gamboa at gmail.com
Fri Oct 8 07:48:38 CEST 2010


Hi again, i hope this mail does not get splitted like the others.

I modified the CMakeList.txt, to install the missing headers. Used the next
code, but on the map the route is not shown, just the source (A) and
Destination (B) Points are drawn.

---Code---

connect(theMap->model()->routingManager()->routingModel(),
SIGNAL(routeCalculated(int)), SLOT(routeCalculated(int)));
connect(theMap->model()->routingManager(),
SIGNAL(routeRetrieved(GeoDataDocument*)),
SLOT(routeRetrieved(GeoDataDocument*)));

RouteRequest * request = theMap->model()->routingManager()->routeRequest();
request->setRoutePreference(RouteRequest::Pedestrian);
GeoDataCoordinates source( -118.14498, 34.0259, 0.0,
GeoDataCoordinates::Degree );
request->append(source);
GeoDataCoordinates destination( -118.0918, 34.0230, 0.0,
GeoDataCoordinates::Degree );
request->append(destination);
theMap->model()->routingManager()->retrieveRoute( request );
int routeCount =
theMap->model()->routingManager()->routingModel()->rowCount();

---Code---

The routeRetrieved signal from ther RoutingManager is emitted, the
routeCount gets 0, and routingModel's signal routeCalculated(int) is not
emitted.
Why? Am I missing something to calcuate the route?

If I use the MarbleControlBox and I enable its routing tab, in the routing
tab, i can see four "points", A,B,C and D, I suppose because of the
RouteRequest->Add(). And if I remove by hand the A and B which are not drawn
(i cant see them in all the globe), everything works fine.

But if i do not remove the A and B points (sources and destination that I
think are set by the MarbleControlBox), and set the work Offline (of the
RoutingManager) as:

1.- setWorkOffline(true): I can see the "Get Directions" button with a
couple of circles spinning, which i can think it is busy getting the route
directions, and it never finishes, it gets the street names, city,etc... A
and B are empty, my added points are C and D, which i think this is the
reason.

2.- setWorkOffline(false), It gets a "0.0 km (Yours)", it gets the street
names, city,etc... but no route is calculated (again, A and B are empty, B
and C are my added points).

How can i programatically remove the empty positions A and B or replace the
empty ones by the source and destination coordinates i created? I tried with
RouteRequest->remove() but did not worked.

My intention is not to use the MarbleControlBox, because user intervention
is not needed in my application, the source and destination points are taken
from a database and should be set programatically.

Thanks for your help.

On Thu, Oct 7, 2010 at 1:07 AM, Dennis Nienhüser <earthwings at gentoo.org>wrote:

> Hi,
>
> the routing related classes are not yet exported: There'll be some API
> changes
> in them in the near future that will change the way route request options
> are
> set and some other changes to make it easily usable from the outside. I
> want
> to export them for KDE 4.6, however, to support that kind of usage.
>
> If you're willing to adapt your code to any API changes, you can manually
> export the missing headers (RoutingModel, RoutingManager, RouteRequest may
> be
> enough) now. I haven't fully tested that yet, YMMV. It's probably a good
> idea
> to CC yourself to bug 248086 [1] which I'll update with the progress on
> this.
> Note that the code posted in comment #1 in that bug is already a bit
> outdated,
> RouteSkeleton is now RouteRequest and shouldn't be created on its own, but
> requested from the RoutingManager.
>
> Regards,
> Dennis
>
> [1] https://bugs.kde.org/show_bug.cgi?id=248086
>
> Am Donnerstag, 7. Oktober 2010, um 06:03:50 schrieb Miguel Chavez Gamboa:
> > Hi,
> >
> >
> > Sorry for the inconvenience caused by my previous mail with formated
> text,
> > this goes in plain text.
> >
> >
> > Im trying to incorporate marble and its new offline routing capabilities
> in
> > my own project, and Im reading the marble source code and the
> > documentation. From the marble source code, i got some code to start and
> > experiment.
> >
> > The next code (adapted from marble source) is causing me some troubles.
> >
> > RoutingManager *routingManager = theMap->model()->routingManager();
> > RoutingModel   *routingModel   = routingManager->routingModel();
> > bool hasRoute = routingModel->rowCount(); //here is the problem
> >
> > My includes are:
> >
> > #include <marble/global.h>
> > #include <marble/MarbleModel.h>
> > #include <marble/RoutingManager.h>
> >
> > The third line (getting the rowCount), causes the compilation to fail
> with
> > the error:
> > error: invalid use of incomplete type ‘struct Marble::RoutingModel’
> > As I have seen, the RoutingModel Class is defined (as Class
> RoutingModel;)
> >  in RoutingManager.h, but included in the ControlView.cpp file as '
> > #include "routing/RoutingModel.h" ' .
> >
> > Are the "routing"-folder headers  inside the marble lib sources not
> > installed (at /usr/include/marble) ?
> > Is this intentional, only for the Marble application (not the library) ?
> >
> > What is the correct way to incorporate routing capabilities to another
> > application? What Classes to use? The RoutingManager?
> >
> >
> > Im using the marble code from the anonymous kde svn repository (svn://
> > anonsvn.kde.org/home/kde/trunk/KDE/kdeedu/marble/src).
> >
> > Thanks in advance,
>
> _______________________________________________
> Marble-devel mailing list
> Marble-devel at kde.org
> https://mail.kde.org/mailman/listinfo/marble-devel
>



-- 
Miguel Chavez Gamboa
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/marble-devel/attachments/20101008/a2d297e7/attachment.htm 


More information about the Marble-devel mailing list