Positionnement (C++)
Positionnement
Le composant « Positionnement » de l'API Qt Location concerne la position géographique, la taille et l'adresse d'un lieu donné. Le composant « Positionnement » comprend une classe « QGeoCoordinate », qui contient la latitude, la longitude et l'altitude en mètres. La classe « QGeoLocation » contient une classe « QGeoCoordinate » ainsi que des informations sur l'adresse et la taille (un cadre de délimitation), ce qui permet aux positions d'être plus que de simples points mathématiques. Il est possible de surveiller les mouvements à l’intérieur ou à l’extérieur des zones délimitées par le rectangle de délimitation. L’API permet également au développeur de contrôler la source des informations de position.
Les données de localisation correspondent à une position précisément spécifiée à la surface de la Terre — telle que fournie par des coordonnées de latitude et de longitude — ainsi qu’aux données associées, telles que :
- La date et l’heure auxquelles la position a été signalée
- La vitesse de l’appareil ayant 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 géographique
Ces données peuvent être extraites à l’aide de diverses méthodes. L’une des méthodes de localisation les plus connues est le GPS (Global Positioning System), un système accessible au grand public qui utilise des signaux radio émis par des satellites en orbite autour de la Terre pour calculer la position et l’heure précises du récepteur. Une autre méthode courante est le « positionnement par identifiant de cellule », qui utilise l’identifiant de la station de base desservant actuellement l’appareil récepteur pour calculer son emplacement approximatif. Ces méthodes de localisation, 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 au sein de l’API est qu’elle fournisse des coordonnées de latitude et de longitude accompagnées d’une date et d’une 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 ` via le 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 arrêtée en appelant la fonction ` stopUpdates()`.
Une source de position par défaut peut être disponible sur certaines plateformes. Appelez 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 plateforme.
Si un problème survient lors de l’accès à la source d’informations, un signal errorOccurred() est émis.
La classe ` QGeoAreaMonitorSource ` permet aux applications clientes d’être notifiées lorsque l’appareil récepteur entre ou sort d’une zone particulière, définie par des coordonnées et un rayon. Si la plateforme offre une prise en charge intégrée de la surveillance de zone, la méthode ` QGeoAreaMonitorSource::createDefaultSource()` renvoie une instance du moniteur de zone par défaut.
Les informations par satellite peuvent également être diffusées via la classe ` QGeoSatelliteInfoSource `. Appelez la méthode ` QGeoSatelliteInfoSource::createDefaultSource()` pour créer une instance de la source de données par satellite par défaut de la plateforme, si celle-ci est disponible. Les clients peuvent également créer une sous-classe de cette classe pour fournir une source de données par satellite personnalisée.
Demande de données de localisation auprès des sources de données
Pour recevoir des données d’une source, connectez-vous à son signal ` positionUpdated()`, puis appelez soit ` startUpdates()`, soit ` requestUpdate()` pour démarrer.
Voici un exemple de client qui reçoit des données de la source de données de localisation par défaut, telle que renvoyée par QGeoPositionInfoSource::createDefaultSource():
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;
}
};Contrôle des aspects liés aux sources de données
La méthode QGeoPositionInfoSource::setUpdateInterval() permet de contrôler la fréquence à laquelle les mises à jour de position sont reçues. Par exemple, si l’application cliente n’a besoin de mises à jour qu’une fois toutes les 30 secondes, elle peut appeler ` setUpdateInterval(30000)`. Si aucun intervalle de mise à jour n’est défini, ou si ` setUpdateInterval()` est appelée avec la valeur 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 n’utiliser que le positionnement par satellite, qui offre un positionnement extérieur assez précis mais peut être très gourmand en énergie, elle peut appeler cette méthode avec la valeur « QGeoPositionInfoSource::SatellitePositioningMethods ». Toutefois, cette méthode ne doit être utilisée que dans des applications clientes spécialisées ; dans la plupart des cas, il ne faut pas modifier les méthodes de positionnement par défaut, car une source peut utiliser en interne diverses méthodes de positionnement susceptibles d’être utiles à l’application.
Données NMEA
NMEA est un protocole textuel courant permettant de spécifier des données de navigation. Pour plus de commodité, la valeur « QNmeaPositionInfoSource » est fournie afin de permettre aux applications clientes de lire et de diffuser des données NMEA soit en mode temps réel (par exemple, lors de la diffusion en continu depuis un appareil GPS), soit en mode simulation (par exemple, lors de la lecture d’un fichier journal NMEA). En mode simulation, la source émettra 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 fonctionnalités fournies par la source de position par défaut renvoyée par ` QGeoPositionInfoSource::createDefaultSource()` (), ainsi que la classe ` QNmeaPositionInfoSource `, suffisent pour récupérer des données de localisation. Cependant, dans certains cas, les développeurs peuvent souhaiter créer leur propre source de données de localisation personnalisée.
L’exemple « Log File Position Source (C++) » montre comment créer une sous-classe de ` QGeoPositionInfoSource ` afin de créer une source de positionnement personnalisée.
Exemples
Exemple de source de position de fichier journal
L'exemple de source de position du fichier journal montre comment créer une sous-classe de ` QGeoPositionInfoSource ` afin de créer une source de positionnement personnalisée.
Exemple d’informations météorologiques
L'exemple « Infos météo » 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 détecter toute proximité | |
Permet de détecter les changements de proximité pour un ensemble de coordonnées spécifié | |
Définit une zone géographique circulaire | |
Définit une position géographique à la surface de la Terre | |
Représente des informations de base sur un lieu | |
Définit un tracé géographique | |
Définit un polygone géographique | |
Contient des informations recueillies sur une position, une direction et une vitesse globales à 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 diffusion des mises à jour d'informations sur les satellites | |
Définit une zone géographique | |
Informations de position à partir d’une source de données NMEA | |
Informations sur les satellites provenant d’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.