Bonjour, j'aimerai utiliser la géolocalisation de Qt mais je ne sais pas comment m'y prendre. :arf:
Merci de m'éclairer sur le système.
Version imprimable
Bonjour, j'aimerai utiliser la géolocalisation de Qt mais je ne sais pas comment m'y prendre. :arf:
Merci de m'éclairer sur le système.
Bonjour,
Qu'avez vous tenté et où bloquez vous.
Sinon, la première étape est la documentation et le projet d'exemple lié à la géolocalisation.
J'ai tenté beaucoup de choses mais je n'arrive pas à récupérer la longitude et la latitude. :weird:
Je ne comprends pas la documentation de Qt et je ne sais même pas dans quelle classe se trouve la solution...
Si quelqu'un sait faire, ça m'aiderai qu'il mette un exemple.:help:
Merci
:salut:
Tu as un exemple au début de http://doc.qt.io/qt-5/location-positioning-cpp.html. Tu récupère un objet QGeoPosition, qui a une méthode pour récupérer les coordonnées : http://doc.qt.io/qt-5/qgeopositioninfo.html#coordinate.
Ensuite, que ne comprends-tu pas ?
QGeoCoordinate QGeoPositionInfo::coordinate() const : donne les coordonnées de l'utilisateur dans un QGeoPosition ?
C'est bien ce qu'indique la doc, oui. Ça te retourne un objet de position, il faut alors utiliser des fonctions pour récupérer la latitude et la longitude séparément.
Merci, je vais essayer avant de passer en résolu.
:merci:
J'ai fait :
Si j'ai bien compris, les coordonnées se trouvent dans ma variable non ?Code:
1
2
3
4
5
6
7
8 QGeoCoordinate coordonnees; QGeoPositionInfo jenesaispascequecest; coordonnees = jenesaispascequecest.coordinate(); //j'essai de récupérer pour voir les coordonnées... test = new QLabel; test->setText(coordonnees.toString()); //il n'y a rien dans le QLabel : comment puis je lire le contenu de coordonnees ????
Je ne peux pas lire cet objet ? Dois-je récupérer la longitude et la latitude ?
En fait ma variable ne contient rien.
Normalement elle devrait contenir mon emplacement non ?
J'ai peut être fait de la merde mais soyez indulgents, je n'ai que 14 ans.
Non, elle n'est pas censée contenir ta localisation : il faut que cette variable soit remplie à un moment ;). Un objet de position peut indiquer un endroit à des kilomètres de ta position actuelle (par exemple, un point à afficher sur une carte). La doc (lien plus haut) te propose un exemple déjà minimal :
En d'autres termes, tu dois utiliser un slot à un moment (comme positionUpdated plus haut) pour récupérer la position : la variable ne peut être remplie que lorsque Qt reçoit les données du capteur.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 class MyClass : public QObject { Q_OBJECT public: MyClass(QObject *parent = 0) : QObject(parent) { QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(this); if (source) { connect(source, SIGNAL(positionUpdated(QGeoPositionInfo)), this, SLOT(positionUpdated(QGeoPositionInfo))); source->startUpdates(); } } private slots: void positionUpdated(const QGeoPositionInfo &info) { qDebug() << "Position updated:" << info; } };
Si les concepts ne te sont pas familiers, joue un peu avec Qt, les signaux et les slots (par exemple, http://qt.developpez.com/tutoriels/introduction-qt/).
Ton slot positionUpdate() donne les coordonnées de l'utilisateur ? :question:
Non : il est appelé avec les coordonnées en argument. Il est appelé par Qt lorsque le signal positionUpdated de QGeoPositionInfoSource est émis.
Mais ton code sorce->startUpdates les donne lui ?
Non plus, mais ça lance la récupération d'informations et l'émission de signaux.
As-tu étudié le concept de signaux et slots ?
Ok