Positionnement (C++)
Positionnement (C++)
Le composant Positioning de l'API Qt Location concerne la position géographique, la taille et l'adresse d'un lieu. Positioning contient une classe QGeoCoordinate, contenant la latitude, la longitude et l'altitude en mètres. QGeoLocation contient une classe QGeoCoordinate plus des informations sur l'adresse et la taille (un cadre de délimitation), de sorte que les positions peuvent être plus que des points mathématiques. Il est possible de surveiller les mouvements à l'intérieur ou à l'extérieur des zones définies dans le cadre de délimitation. L'API permet également au développeur de contrôler la source des informations de position.
Les données de localisation impliquent une position précise sur la surface de la Terre - telle que fournie par une coordonnée latitude-longitude - ainsi que des données associées, telles que :
- la date et l'heure auxquelles la position a été signalée
- la vitesse de l'appareil qui a signalé la position
- l'altitude de la position signalée (hauteur au-dessus du niveau de la mer)
- le relèvement de l'appareil en degrés, par rapport au nord vrai
Ces données peuvent être extraites par différentes méthodes. L'une des méthodes de positionnement les plus connues est le GPS (Global Positioning System), un système accessible au public qui utilise des signaux radioélectriques reçus de satellites en orbite autour de la Terre pour calculer la position précise et l'heure du récepteur. Une autre méthode très répandue est le "positionnement par identifiant cellulaire", qui utilise l'identifiant cellulaire du site cellulaire qui dessert actuellement l'appareil récepteur pour calculer sa position approximative. Ces méthodes de positionnement, ainsi que d'autres, peuvent toutes être utilisées avec l'API de localisation ; la seule exigence pour une source de données de localisation dans l'API est qu'elle fournisse une coordonnée latitude-longitude avec une valeur date/heure, avec la possibilité de fournir les autres attributs énumérés ci-dessus.
Les sources de données de localisation sont créées en sous-classant QGeoPositionInfoSource et en fournissant des objets QGeoPositionInfo par le biais du signal QGeoPositionInfoSource::positionUpdated(). Les clients qui ont besoin de données de localisation peuvent se connecter au signal positionUpdated() et appeler startUpdates() ou requestUpdate() pour déclencher la distribution des données de localisation. La distribution des données de localisation peut être interrompue en appelant la fonction stopUpdates().
Une source de position par défaut peut être disponible sur certaines plateformes. Appelez la fonction QGeoPositionInfoSource::createDefaultSource() pour créer une instance de la source de position par défaut. La méthode renvoie nullptr si aucune source par défaut n'est disponible pour la plate-forme.
Si un problème survient lors de l'accès à la source d'information, un signal errorOccurred() est émis.
La classe QGeoAreaMonitorSource permet aux applications clientes d'être informées lorsque l'appareil récepteur est entré ou sorti d'une zone particulière, spécifiée par une coordonnée et un rayon. Si la plateforme fournit un support intégré pour la surveillance des zones, la méthode QGeoAreaMonitorSource::createDefaultSource() renvoie une instance du moniteur de zone par défaut.
Les informations satellitaires peuvent également être distribuées par l'intermédiaire de la classe QGeoSatelliteInfoSource. Appelez la méthode QGeoSatelliteInfoSource::createDefaultSource() pour créer une instance de la source de données satellite par défaut pour la plateforme, s'il en existe une. Sinon, les clients peuvent la sous-classer pour fournir une source de données satellite personnalisée.
Demande de données de localisation à partir de sources de données
Pour recevoir des données d'une source, connectez-vous à son signal positionUpdated(), puis appelez startUpdates() ou requestUpdate() pour commencer.
Voici un exemple de client qui reçoit des données de la source de données de localisation par défaut, renvoyées par QGeoPositionInfoSource::createDefaultSource() :
class MyClass : public QObject { Q_OBJECTpublic: 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; } } ;
Contrôle des aspects des sources de données
La méthode QGeoPositionInfoSource::setUpdateInterval() peut être utilisée pour contrôler le rythme auquel les mises à jour de position sont reçues. Par exemple, si l'application cliente n'a besoin de mises à jour que toutes les 30 secondes, elle peut appeler setUpdateInterval(30000). Si aucun intervalle de mise à jour n'est défini ou si setUpdateInterval() est appelé avec une valeur de 0, la source utilise un intervalle par défaut ou une autre logique interne pour déterminer quand les mises à jour doivent être fournies.
QGeoPositionInfoSource::setPreferredPositioningMethods() permet aux applications clientes de demander l'utilisation d'un certain type de méthode de positionnement. Par exemple, si l'application préfère utiliser uniquement le positionnement par satellite, qui offre un positionnement extérieur assez précis mais peut être un gros consommateur de ressources énergétiques, elle peut appeler cette méthode avec la valeur QGeoPositionInfoSource::SatellitePositioningMethods. Dans la plupart des cas, les méthodes de positionnement par défaut ne doivent pas être modifiées, car une source peut utiliser en interne diverses méthodes de positionnement qui peuvent être utiles à l'application.
Données NMEA
NMEA est un protocole textuel commun permettant de spécifier des données de navigation. Pour des raisons pratiques, le site QNmeaPositionInfoSource est fourni pour permettre aux applications clientes de lire et de distribuer des données NMEA en mode temps réel (par exemple, lorsqu'elles proviennent d'un appareil GPS) ou en mode simulation (par exemple, lorsqu'elles proviennent d'un fichier journal NMEA). En mode simulation, la source émet des mises à jour en fonction de l'horodatage de chaque phrase NMEA afin de produire une "relecture" des données enregistrées.
En général, les capacités fournies par la source de position par défaut, telles qu'elles sont renvoyées par QGeoPositionInfoSource::createDefaultSource(), ainsi que la classe QNmeaPositionInfoSource, sont suffisantes pour récupérer les données de localisation. Toutefois, dans certains cas, les développeurs peuvent souhaiter écrire leur propre source de données de localisation personnalisée.
L'exemple Log File Position Source (C++) montre comment sous-classer QGeoPositionInfoSource pour créer une source de positionnement personnalisée.
Exemples de sources de données
Exemple de source de position de fichier journal
L'exemple de source de position de fichier journal montre comment sous-classer QGeoPositionInfoSource pour créer une source de positionnement personnalisée.
Exemple d'informations météorologiques
L'exemple Weather Info montre comment utiliser la position actuelle de l'utilisateur pour récupérer du contenu local à partir d'un service web dans un plugin C++ pour QML.
Classes de positionnement
Représente l'adresse d'un QGeoLocation | |
Décrit les paramètres d'une zone ou d'une région à surveiller pour la proximité | |
Permet la détection des changements de proximité pour un ensemble de coordonnées spécifié | |
Définit une zone géographique circulaire | |
Définit une position géographique sur la surface de la Terre | |
Représente des informations de base sur un lieu | |
Définit un chemin géographique | |
Définit un polygone géographique | |
Contient des informations sur la position globale, la direction et la vitesse à un moment donné. | |
Classe de base abstraite pour la distribution des mises à jour de position | |
Définit une zone géographique rectangulaire | |
Contient des informations de base sur un satellite | |
Classe de base abstraite pour la distribution de mises à jour d'informations sur les satellites | |
Définit une zone géographique | |
Informations sur la position à l'aide d'une source de données NMEA | |
Informations sur les satellites utilisant une source de données NMEA |
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.