이 페이지에서

PositionSource QML Type

PositionSource 유형은 장치의 현재 위치를 제공합니다. 더 보기...

Import Statement: import QtPositioning

속성

방법

상세 설명

PositionSource 유형은 사용자 기기의 현재 위치에 대한 정보를 제공합니다. 위치는 Position 유형으로 제공되며, 여기에는 경도, 위도, 속도 및 정확도 세부 정보를 포함하여 GPS 및 기타 유사한 시스템에서 일반적으로 제공되는 모든 표준 매개변수가 포함됩니다.

플랫폼과 기기에 따라 사용 가능한 위치 소스가 다르기 때문에, 이들은 기본 유형(Satellite, NonSatellite, AllPositioningMethods)별로 분류됩니다. 현재 플랫폼에서 사용 가능한 방법은 supportedPositioningMethods 속성을 통해 열거할 수 있습니다.

애플리케이션에 적합한 방법을 지정하려면 preferredPositioningMethods 속성을 설정하십시오. 선호하는 방법이 사용 불가능한 경우, 대신 해당 플랫폼의 기본 위치 데이터 소스가 선택됩니다. 기본 소스를 사용할 수 없는 경우(런타임 플랫폼에 설치된 소스가 없거나 비활성화된 경우), valid 속성은 false로 설정됩니다.

updateInterval 속성을 사용하여 애플리케이션이 위치 업데이트를 수신할 빈도를 지정할 수 있습니다. start(), stop() 및 update() 메서드를 사용하여 PositionSource의 작동을 제어할 수 있으며, active 속성을 설정하면 start() 또는 stop()를 호출하는 것과 동일한 효과를 얻을 수 있습니다.

PositionSource가 활성화된 상태에서는 바인딩에서 position 속성을 단순히 사용(다른 항목의 속성 값으로)하거나, onPositionChanged 신호 핸들러의 구현체를 제공함으로써 위치 업데이트를 가져올 수 있습니다.

사용 예

다음 예제는 1초마다 업데이트를 수신하고 경도와 위도를 콘솔에 출력하는 데 사용되는 간단한 PositionSource를 보여줍니다.

PositionSource {
    id: src
    updateInterval: 1000
    active: true

    onPositionChanged: {
        var coord = src.position.coordinate;
        console.log("Coordinate:", coord.longitude, coord.latitude);
    }
}

작동 상태 제어

앞서 언급한 바와 같이, PositionSource는 작동 상태를 제어하는 두 가지 방법을 제공합니다.

참고: 이러한 접근 방식을 혼용하지 않는것이 매우중요합니다 . 바인딩 가능한 active 속성을 사용하여 PositionSource 객체를 제어하다가, 나중에 코드의 다른 부분에서 start() 또는 stop()가 호출되면 바인딩이 깨지게 되며, 이로 인해 예를 들어 UI 요소가 더 이상 어떤 기본 객체에도 연결되지 않게 될 수 있습니다.

다음은 active 속성이 CheckBox 상태에 바인딩되어 있지만, onClicked 신호 핸들러에서 stop()을 호출함으로써 해당 바인딩이 끊어지는 잘못된 코드의 예입니다.

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()
            }
        }
    }
}

'Stop' 버튼을 클릭하면 ` stop()`가 실행되고, ` active ` 속성에 대한 바인딩이 끊어집니다. 이 시점에서 CheckBox UI 요소는 더 이상 PositionSource 객체를 제어하지 않게 됩니다.

이 경우 간단한 해결 방법은 onClicked 핸들러에서 CheckBox의 상태를 업데이트하는 것입니다. CheckBox의 선택이 해제되는 즉시 active 속성에 알림이 전달되며, PositionSource 객체의 상태도 그에 따라 업데이트됩니다. 또한 UI도 일관된 상태를 유지하게 됩니다.

Button {
    id: btn
    text: "Stop"
    onClicked: {
        cb.checked = false
    }
}

참고: update()을 사용하여 단일 위치 업데이트를 요청하는 것은 active 속성의 바인딩에 아무런 영향을 미치지 않으므로, 두 기능을 문제없이 함께 사용할 수 있습니다.

QtPositioning::Position, QGeoPositionInfoSource, PluginParameter 및 Qt 바인딩 가능한 속성항목도 참조하십시오 .

속성 문서

active : bool

이 속성은 위치 소스가 활성 상태인지 여부를 나타냅니다. 이 속성을 false로 설정하면 stop 를 호출하는 것과 같으며, true로 설정하면 start 를 호출하는 것과 같습니다.

start, stop 및 update도 참조하십시오 .

name : string

이 속성은 현재 위치 정보를 제공하는 플러그인의 고유한 내부 이름을 저장합니다.

이 속성을 설정하면 PositionSource 가 특정 위치 제공자를 사용하게 됩니다. name 속성이 변경될 당시 PositionSource 가 활성화된 상태라면, 해당 제공자는 비활성화됩니다. 지정된 위치 제공자를 불러올 수 없는 경우 위치 소스가 유효하지 않게 됩니다.

name 속성을 변경하면 updateInterval, supportedPositioningMethods 및 preferredPositioningMethods 속성도 함께 변경될 수 있습니다.

parameters : list<PluginParameter> [default, since QtPositioning 5.14]

이 속성은 플러그인 매개변수 목록을 포함합니다.

이 속성은 QtPositioning 5.14에서 도입되었습니다.

position : Position

이 속성은 마지막으로 확인된 위치 데이터를 저장합니다. 이 속성은 읽기 전용입니다.

Position 유형에는 다양한 위치 멤버 변수가 있으며, 적절한 유효성 검사 함수를 통해 이 변수들의 유효성을 확인할 수 있습니다(예를 들어, 업데이트에 속도나 고도 데이터가 포함되지 않은 경우가 있습니다).

그러나 positionChanged 신호가 수신될 때마다, 최소한 position::coordinate::latitude, position::coordinate::longitude 및 position::timestamp는 유효한 것으로 간주할 수 있습니다.

start, stop 및 update도 참조하십시오 .

preferredPositioningMethods : enumeration

이 속성은 현재 소스의 기본 배치 방법을 저장합니다.

상수설명
PositionSource.NoPositioningMethods선호하는 위치 파악 방법이 없습니다.
PositionSource.SatellitePositioningMethodsGPS와 같은 위성 기반 위치 파악 방법을 우선적으로 사용해야 합니다.
PositionSource.NonSatellitePositioningMethods위성 기반이 아닌 위치 확인 방법을 우선적으로 사용해야 합니다.
PositionSource.AllPositioningMethods어떤 위치 파악 방법이라도 허용됩니다.

sourceError : enumeration

이 속성은 PositionSource 에서 마지막으로 발생한 오류를 저장합니다.

상수설명
PositionSource.AccessError애플리케이션에 필요한 권한이 부족하여 원격 위치 백엔드에 대한 연결 설정에 실패했습니다.
PositionSource.ClosedError위치 백엔드가 연결을 닫았습니다. 이는 예를 들어 사용자가 위치 서비스를 끄는 경우 등에 발생합니다. 위치 서비스가 다시 활성화되면 정기적인 업데이트가 재개됩니다.
PositionSource.NoError오류가 발생하지 않았습니다.
PositionSource.UnknownSourceError알 수 없는 오류가 발생했습니다.
PositionSource.UpdateTimeoutError지정된 타임아웃 시간 내에 현재 위치를 가져올 수 없거나, 이 PositionSource 가 더 이상 정기적인 업데이트를 제공할 수 없다고 판단했습니다.

supportedPositioningMethods : enumeration

이 속성은 현재 소스의 지원되는 위치 지정 방법을 나타냅니다.

상수설명
PositionSource.NoPositioningMethods지원되는 위치 확인 방법이 없음(소스 없음).
PositionSource.SatellitePositioningMethodsGPS와 같은 위성 기반 위치 측정 방법이 지원됩니다.
PositionSource.NonSatellitePositioningMethods비위성 기반 방식이 지원됩니다.
PositionSource.AllPositioningMethods위성 기반 및 비위성 기반 위치 확인 방법이 모두 지원됩니다.

updateInterval : int

이 속성은 업데이트 간격(밀리초)을 지정합니다.

QGeoPositionInfoSource::updateInterval()도 참조하십시오 .

valid : bool

PositionSource 객체가 데이터를 제공하기 위한 유효한 백엔드 플러그인을 확보한 경우 이 속성은 true입니다. false인 경우, PositionSource 의 다른 메서드들은 아무런 효과를 발휘하지 않습니다.

애플리케이션은 이 속성을 확인하여 런타임 플랫폼에서 위치 지정이 사용 가능한지 및 활성화되어 있는지 판단하고, 그에 따라 대응해야 합니다.

메서드 문서

[since Qt Positioning 5.14] var backendProperty(string name)

name 라는 백엔드별 속성이 존재할 경우, 해당 속성의 값을 반환합니다. 그렇지 않은 경우, 초기화되지 않은 PositionSource 에서 호출된 경우를 포함하여 반환 값은 유효하지 않습니다. 지원되는 백엔드별 속성은 Qt Positioning plugins#Default plugins에 나열되어 있으며 설명되어 있습니다.

이 메서드는 Qt Positioning 5.14에서 도입되었습니다.

setBackendProperty 및 QGeoPositionInfoSource::setBackendProperty도 참조하십시오 .

[since Qt Positioning 5.14] bool setBackendProperty(string name, var value)

name 라는 백엔드별 속성을 value 로 설정합니다. 성공 시 true를 반환하고, 그렇지 않은 경우 false를 반환하며, 초기화되지 않은 PositionSource 에서 호출된 경우도 포함됩니다. 지원되는 백엔드별 속성은 Qt Positioning plugins#Default plugins에 나열되어 있으며 설명이 제공됩니다.

이 메서드는 Qt Positioning 5.14에서 도입되었습니다.

backendProperty 및 QGeoPositionInfoSource::setBackendProperty도 참조하십시오 .

void start()

위치 소스로부터 업데이트를 요청합니다. ` updateInterval `이 설정되어 있으면 해당 값을 사용하고, 그렇지 않으면 기본 간격을 사용합니다. 사용 가능한 소스가 없는 경우, 이 메서드는 아무런 효과도 없습니다.

참고: 이 메서드를호출하면 active 속성의 바인딩이 해제됩니다.

stop(), update(), active도 참조하십시오 .

void stop()

위치 소스의 업데이트를 중지합니다. 사용 가능한 소스가 없거나 비활성 상태인 경우, 이 메서드는 아무런 효과도 미치지 않습니다.

참고: 이 메서드를호출하면 active 속성의 바인딩이 해제됩니다.

참조: start(), update() 및 active.

void update(int timeout)

위치 소스에서 단일 업데이트를 요청하는 편리한 메서드입니다. 사용 가능한 소스가 없는 경우, 이 메서드는 아무런 효과도 없습니다.

위치 소스가 비활성 상태인 경우, 업데이트를 수신하는 데 걸리는 시간 동안 또는 요청이 시간 초과될 때까지 소스가 활성화됩니다. 요청 시간 초과 기간은 소스별로 다릅니다.

timeout 는 밀리초 단위로 지정됩니다. timeout 가 0(기본값)인 경우, 소스에 적합한 적정한 타임아웃 기간으로 자동 설정됩니다.

start(), stop(), 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.