En esta página

PositionSource QML Type

El tipo PositionSource proporciona la posición actual del dispositivo. Más...

Import Statement: import QtPositioning

Propiedades

Métodos

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:

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.

ConstanteDescripción
PositionSource.NoPositioningMethodsNo se prefiere ningún método de posicionamiento.
PositionSource.SatellitePositioningMethodsDeben preferirse los métodos de posicionamiento basados en satélite, como el GPS.
PositionSource.NonSatellitePositioningMethodsDeben preferirse los métodos no basados en satélite.
PositionSource.AllPositioningMethodsSe acepta cualquier método de posicionamiento.

sourceError : enumeration

Esta propiedad contiene el último error que se produjo en PositionSource.

ConstanteDescripción
PositionSource.AccessErrorLa configuración de la conexión con el backend de posicionamiento remoto falló porque la aplicación carecía de los privilegios necesarios.
PositionSource.ClosedErrorEl 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.NoErrorNo se ha producido ningún error.
PositionSource.UnknownSourceErrorSe ha producido un error no identificado.
PositionSource.UpdateTimeoutErrorNo 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.

ConstanteDescripción
PositionSource.NoPositioningMethodsNo se admiten métodos de posicionamiento (ninguna fuente).
PositionSource.SatellitePositioningMethodsSe admiten métodos de posicionamiento basados en satélite, como GPS.
PositionSource.NonSatellitePositioningMethodsSe admiten métodos no basados en satélite.
PositionSource.AllPositioningMethodsSe 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.

Véase también start(), stop(), y active.

© 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.