PositionSource QML Type
El tipo PositionSource proporciona la posición actual del dispositivo. Más...
| Import Statement: | import QtPositioning |
Propiedades
- active : bool
- name : string
- parameters : list<PluginParameter>
(since QtPositioning 5.14) - position : Position
- preferredPositioningMethods : enumeration
- sourceError : enumeration
- supportedPositioningMethods : enumeration
- updateInterval : int
- valid : bool
Métodos
- var backendProperty(string name)
(since Qt Positioning 5.14) - bool setBackendProperty(string name, var value)
(since Qt Positioning 5.14) - void start()
- void stop()
- void update(int timeout)
Descripción detallada
El tipo PositionSource proporciona información sobre la posición actual del dispositivo de usuario. La posición está disponible como tipo Position, que contiene todos los parámetros estándar típicamente disponibles de GPS y otros sistemas similares, incluyendo longitud, latitud, velocidad y detalles de precisión.
Dado que existen diferentes fuentes de posición en distintas plataformas y dispositivos, éstas se clasifican por su tipo básico (Satélite, No Satélite y AllPositioningMethods). Los métodos disponibles para la plataforma actual pueden enumerarse en la propiedad supportedPositioningMethods.
Para indicar qué métodos son adecuados para su aplicación, establezca la propiedad preferredPositioningMethods. Si los métodos preferidos no están disponibles, se elegirá en su lugar la fuente de datos de localización por defecto para la plataforma. Si no hay ninguna fuente predeterminada disponible (porque no hay ninguna instalada para la plataforma en tiempo de ejecución, o porque está deshabilitada), la propiedad valid se establecerá en false.
La propiedad updateInterval puede utilizarse para indicar la frecuencia con la que la aplicación desea recibir actualizaciones de posición. Los métodos start(), stop() y update() pueden utilizarse para controlar el funcionamiento del PositionSource, así como la propiedad active, que cuando se establece equivale a llamar a start() o stop().
Cuando el PositionSource está activo, las actualizaciones de posición pueden recuperarse simplemente utilizando la propiedad position en un enlace (como el valor de la propiedad de otro elemento), o proporcionando una implementación del manejador de señales onPositionChanged.
Ejemplo de uso
El siguiente ejemplo muestra un PositionSource simple utilizado para recibir actualizaciones cada segundo e imprimir la longitud y latitud en la consola.
PositionSource { id: src updateInterval: 1000 active: true onPositionChanged: { var coord = src.position.coordinate; console.log("Coordinate:", coord.longitude, coord.latitude); } }
Control del estado de la operación
Como se ha mencionado anteriormente, PositionSource proporciona dos formas de controlar su estado de funcionamiento:
- Utilizando la propiedad vinculable active.
- Utilizando los métodos start() y stop().
Nota: Es muy importante no mezclar estos enfoques. Si se utiliza una propiedad vinculable active para controlar el objeto PositionSource, pero más tarde se llama a start() o stop() desde la otra parte del código, la vinculación se rompe, lo que puede resultar, por ejemplo, en un elemento de interfaz de usuario que ya no está conectado a ningún objeto subyacente.
Considere el siguiente ejemplo de código incorrecto en el que la propiedad active está vinculada al estado CheckBox, y la llamada a stop() en el manejador de señal onClicked rompe esa vinculación.
Window { width: 640 height: 480 visible: true PositionSource { id: posSource name: "geoclue2" active: cb.checked } Column { anchors.centerIn: parent spacing: 20 CheckBox { id: cb } Button { id: btn text: "Stop" onClicked: { posSource.stop() } } } }
Una vez que se pulsa el botón Stop, se ejecuta stop() y se rompe el enlace de la propiedad active. En este punto el elemento CheckBox UI ya no controla el objeto PositionSource.
Una solución sencilla en este caso es actualizar el estado del CheckBox desde el manejador onClicked. Tan pronto como el CheckBox se desmarque, la propiedad active será notificada, y el estado del objeto PositionSource se actualizará en consecuencia. La UI también estará en un estado consistente.
Button { id: btn text: "Stop" onClicked: { cb.checked = false } }
Nota: El uso de update() para solicitar una única actualización de posición no tiene ningún efecto sobre los bindings de la propiedad active, por lo que pueden utilizarse conjuntamente sin ningún problema.
Véase también QtPositioning::Position, QGeoPositionInfoSource, PluginParameter, y Qt Bindable Properties.
Documentación de propiedades
active : bool
Esta propiedad indica si la fuente de posición está activa. Establecer esta propiedad a false equivale a llamar a stop, y establecer esta propiedad a true equivale a llamar a start.
Ver también start, stop, y update.
name : string
Esta propiedad contiene el nombre interno único del plugin que proporciona actualmente la información de posición.
Establecer esta propiedad hace que PositionSource utilice un proveedor de posicionamiento concreto. Si PositionSource está activo en el momento en que se cambia la propiedad name, pasará a estar inactivo. Si el proveedor de posicionamiento especificado no puede cargarse, la fuente de posición dejará de ser válida.
Cambiar la propiedad name puede causar que las propiedades updateInterval, supportedPositioningMethods y preferredPositioningMethods cambien también.
parameters : list<PluginParameter> [default, since QtPositioning 5.14]
Esta propiedad contiene la lista de parámetros del plugin.
Esta propiedad se introdujo en QtPositioning 5.14.
position : Position
Esta propiedad contiene los últimos datos posicionales conocidos. Es una propiedad de sólo lectura.
El tipo Position tiene diferentes variables miembro posicionales, cuya validez puede comprobarse con las funciones de validez apropiadas (por ejemplo, a veces una actualización no tiene datos de velocidad o altitud).
Sin embargo, siempre que se haya recibido una señal positionChanged, se puede suponer que al menos position::coordinate::latitude, position::coordinate::longitude y position::timestamp son válidas.
Véase también start, stop, y update.
preferredPositioningMethods : enumeration
Esta propiedad contiene los métodos de posicionamiento preferidos de la fuente actual.
| Constante | Descripción |
|---|---|
PositionSource.NoPositioningMethods | No se prefiere ningún método de posicionamiento. |
PositionSource.SatellitePositioningMethods | Deben preferirse los métodos de posicionamiento basados en satélite, como el GPS. |
PositionSource.NonSatellitePositioningMethods | Deben preferirse los métodos no basados en satélite. |
PositionSource.AllPositioningMethods | Se acepta cualquier método de posicionamiento. |
sourceError : enumeration
Esta propiedad contiene el último error que se produjo en PositionSource.
| Constante | Descripción |
|---|---|
PositionSource.AccessError | La configuración de la conexión con el backend de posicionamiento remoto falló porque la aplicación carecía de los privilegios necesarios. |
PositionSource.ClosedError | El backend de posicionamiento cerró la conexión, lo que ocurre por ejemplo en caso de que el usuario desactive los servicios de localización. En cuanto se vuelva a activar el servicio de localización, se reanudarán las actualizaciones periódicas. |
PositionSource.NoError | No se ha producido ningún error. |
PositionSource.UnknownSourceError | Se ha producido un error no identificado. |
PositionSource.UpdateTimeoutError | No se ha podido recuperar la posición actual en el tiempo de espera especificado, o PositionSource ha determinado que no podrá proporcionar más actualizaciones periódicas. |
supportedPositioningMethods : enumeration
Esta propiedad contiene los métodos de posicionamiento soportados por la fuente actual.
| Constante | Descripción |
|---|---|
PositionSource.NoPositioningMethods | No se admiten métodos de posicionamiento (ninguna fuente). |
PositionSource.SatellitePositioningMethods | Se admiten métodos de posicionamiento basados en satélite, como GPS. |
PositionSource.NonSatellitePositioningMethods | Se admiten métodos no basados en satélite. |
PositionSource.AllPositioningMethods | Se admiten métodos de posicionamiento basados y no basados en satélite. |
updateInterval : int
Esta propiedad contiene el intervalo deseado entre actualizaciones (milisegundos).
Véase también QGeoPositionInfoSource::updateInterval().
valid : bool
Esta propiedad es verdadera si el objeto PositionSource ha adquirido un plugin backend válido para proporcionar datos. Si es false, otros métodos de PositionSource no tendrán efecto.
Las aplicaciones deben comprobar esta propiedad para determinar si el posicionamiento está disponible y habilitado en la plataforma de ejecución, y reaccionar en consecuencia.
Documentación de métodos
[since Qt Positioning 5.14] var backendProperty(string name)
Devuelve el valor de la propiedad específica del backend llamada name, si está presente. En caso contrario, incluso si se llama a un PositionSource no inicializado, el valor devuelto no será válido. Las propiedades específicas de backend soportadas se listan y describen en Qt Positioning plugins#Default plugins.
Este método se introdujo en Qt Positioning 5.14.
Véase también setBackendProperty y QGeoPositionInfoSource::setBackendProperty.
[since Qt Positioning 5.14] bool setBackendProperty(string name, var value)
Establece la propiedad específica del backend name en value. Devuelve true en caso de éxito, false en caso contrario, incluso si se llama a un PositionSource no inicializado. Las propiedades específicas de backend soportadas se listan y describen en Qt Positioning plugins#Default plugins.
Este método se introdujo en Qt Positioning 5.14.
Véase también backendProperty y QGeoPositionInfoSource::setBackendProperty.
void start()
Solicita actualizaciones de la fuente de localización. Utiliza updateInterval si está configurado, intervalo por defecto en caso contrario. Si no hay fuente disponible, este método no tiene efecto.
Nota: La llamada a este método rompe los enlaces de la propiedad active.
Véase también stop(), update(), y active.
void stop()
Detiene las actualizaciones de la fuente de localización. Si no hay ninguna fuente disponible o no está activa, este método no tiene ningún efecto.
Nota: La invocación de este método rompe las vinculaciones de la propiedad active.
Véase también start(), update(), y active.
void update(int timeout)
Un método práctico para solicitar una única actualización de la fuente de localización. Si no hay ninguna fuente disponible, este método no tiene ningún efecto.
Si la fuente de posición no está activa, se activará durante el tiempo que tarde en recibir una actualización, o hasta que se agote el tiempo de espera de la solicitud. El tiempo de espera de la petición es específico de cada fuente.
timeout se especifica en milisegundos. Si timeout es cero (el valor por defecto), se utilizará por defecto un periodo de tiempo razonable apropiado para la fuente.
© 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.