QGeoPositionInfoSource Class
QGeoPositionInfoSource 클래스는 위치 업데이트 배포를 위한 추상 베이스 클래스입니다. 더 보기...
Header: | #include <QGeoPositionInfoSource> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Positioning) target_link_libraries(mytarget PRIVATE Qt6::Positioning) |
qmake: | QT += positioning |
상속합니다: | QObject |
상속 대상: |
공용 유형
enum | Error { AccessError, ClosedError, NoError, UnknownSourceError, UpdateTimeoutError } |
enum | PositioningMethod { NoPositioningMethods, SatellitePositioningMethods, NonSatellitePositioningMethods, AllPositioningMethods } |
flags | PositioningMethods |
속성
- minimumUpdateInterval : const int
- preferredPositioningMethods : PositioningMethods
- sourceName : const QString
- updateInterval : int
공용 기능
QGeoPositionInfoSource(QObject *parent) | |
virtual | ~QGeoPositionInfoSource() |
(since Qt 5.14) virtual QVariant | backendProperty(const QString &name) const |
QBindable<QGeoPositionInfoSource::PositioningMethods> | bindablePreferredPositioningMethods() |
QBindable<int> | bindableUpdateInterval() |
virtual QGeoPositionInfoSource::Error | error() const = 0 |
virtual QGeoPositionInfo | lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const = 0 |
virtual int | minimumUpdateInterval() const = 0 |
QGeoPositionInfoSource::PositioningMethods | preferredPositioningMethods() const |
(since Qt 5.14) virtual bool | setBackendProperty(const QString &name, const QVariant &value) |
virtual void | setPreferredPositioningMethods(QGeoPositionInfoSource::PositioningMethods methods) |
virtual void | setUpdateInterval(int msec) |
QString | sourceName() const |
virtual QGeoPositionInfoSource::PositioningMethods | supportedPositioningMethods() const = 0 |
int | updateInterval() const |
공용 슬롯
virtual void | requestUpdate(int timeout = 0) = 0 |
virtual void | startUpdates() = 0 |
virtual void | stopUpdates() = 0 |
신호
void | errorOccurred(QGeoPositionInfoSource::Error positioningError) |
void | positionUpdated(const QGeoPositionInfo &update) |
(since Qt 5.12) void | supportedPositioningMethodsChanged() |
정적 공용 멤버
QStringList | availableSources() |
QGeoPositionInfoSource * | createDefaultSource(QObject *parent) |
(since Qt 5.14) QGeoPositionInfoSource * | createDefaultSource(const QVariantMap ¶meters, QObject *parent) |
QGeoPositionInfoSource * | createSource(const QString &sourceName, QObject *parent) |
(since Qt 5.14) QGeoPositionInfoSource * | createSource(const QString &sourceName, const QVariantMap ¶meters, QObject *parent) |
상세 설명
정적 함수 QGeoPositionInfoSource::createDefaultSource()는 사용 가능한 경우 플랫폼에 적합한 기본 위치 소스를 생성합니다. 그렇지 않으면 QGeoPositionInfoSource는 QGeoPositionInfoSourceFactory 인터페이스를 구현하는 사용 가능한 플러그인을 확인합니다.
QGeoPositionInfoSource 서브클래스의 사용자는 requestUpdate()를 사용하여 현재 위치를 요청하거나 startUpdates() 및 stopUpdates()를 사용하여 정기 위치 업데이트를 시작 및 중지할 수 있습니다. 업데이트가 가능하면 positionUpdated()가 전송됩니다. 마지막으로 알려진 위치는 lastKnownPosition()로 액세스할 수 있습니다.
정기적인 위치 업데이트가 필요한 경우 setUpdateInterval()를 사용하여 이러한 업데이트가 얼마나 자주 전송되어야 하는지 지정할 수 있습니다. 간격을 지정하지 않으면 업데이트가 가능할 때마다 업데이트가 제공됩니다. 예를 들어
// Emit updates every 10 seconds if available QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(0); if (source) source->setUpdateInterval(10000);
이전에 설정한 업데이트 간격을 제거하려면 setUpdateInterval()를 0으로 호출합니다.
참고: 위치 소스는 minimumUpdateInterval()에서 반환되는 것처럼 업데이트 간격에 대한 최소값 요구 사항을 가질 수 있습니다.
참고: 안드로이드 서비스에서 이 클래스를 사용하려면 안드로이드에서Qt Positioning 을 참조하세요.
멤버 유형 문서
enum QGeoPositionInfoSource::Error
오류 열거형은 발생할 수 있는 오류를 나타냅니다.
Constant | 값 | 설명 |
---|---|---|
QGeoPositionInfoSource::AccessError | 0 | 애플리케이션에 필요한 권한이 없기 때문에 원격 위치 측위 백엔드에 대한 연결 설정이 실패했습니다. |
QGeoPositionInfoSource::ClosedError | 1 | 원격 위치 측위 백엔드가 연결을 닫았습니다(예: 사용자가 위치 서비스를 끄기로 전환하는 경우). 위치 서비스가 다시 활성화되는 즉시 정기 업데이트가 재개됩니다. |
QGeoPositionInfoSource::NoError | 3 | 오류가 발생하지 않았습니다. |
QGeoPositionInfoSource::UnknownSourceError | 2 | 알 수 없는 오류가 발생했습니다. |
QGeoPositionInfoSource::UpdateTimeoutError (since Qt 6.2) | 4 | requestUpdate()가 호출된 경우 이 오류는 지정된 시간 제한 내에 현재 위치를 검색할 수 없음을 나타냅니다. startUpdates ()가 호출된 경우 이 오류는 QGeoPositionInfoSource 하위 클래스가 더 이상 정기 업데이트를 제공할 수 없다고 판단했음을 나타냅니다. 후자의 경우 이 오류는 정기 업데이트가 재개될 때까지 다시 발생하지 않습니다. |
열거형 QGeoPositionInfoSource::포지셔닝 메서드
플래그 QGeoPositionInfoSource::포지셔닝 메서드
포지셔닝 메서드의 유형을 정의합니다.
Constant | 값 | 설명 |
---|---|---|
QGeoPositionInfoSource::NoPositioningMethods | 0x00000000 | 포지셔닝 메서드 없음. |
QGeoPositionInfoSource::SatellitePositioningMethods | 0x000000ff | GPS 또는 GLONASS와 같은 위성 기반 포지셔닝 방법. |
QGeoPositionInfoSource::NonSatellitePositioningMethods | 0xffffff00 | 3GPP 셀 식별자 또는 WiFi 기반 포지셔닝과 같은 기타 포지셔닝 방법. |
QGeoPositionInfoSource::AllPositioningMethods | 0xffffffff | 위성 기반 위치 확인 방법은 가능한 한 빨리 사용합니다. 그렇지 않으면 위성 기반이 아닌 방법. |
포지셔닝 메서드 유형은 QFlags<PositioningMethod>에 대한 타입 정의입니다. 포지셔닝 메서드 값의 OR 조합을 저장합니다.
속성 문서
[read-only]
minimumUpdateInterval : const int
이 속성은 위치 업데이트를 검색하는 데 필요한 최소 시간(밀리초)을 보유합니다.
이 값은 setUpdateInterval() 및 requestUpdate()에서 허용되는 최소값입니다.
액세스 함수:
virtual int | minimumUpdateInterval() const = 0 |
[bindable]
preferredPositioningMethods : PositioningMethods
참고: 이 속성은 QProperty 바인딩을 지원합니다.
이 소스에 대해 선호하는 위치 지정 방법을 설정합니다.
새 메소드에 소스에서 지원하지 않는 메소드가 포함된 경우 지원되지 않는 메소드는 무시됩니다.
새 메소드에 소스에서 사용 가능/지원하는 메소드가 하나도 포함되지 않은 경우 기본 설정 메소드는 소스에서 사용 가능한 메소드 집합으로 설정됩니다. 소스에 사용 가능한 메서드가 없는 경우(예: 위치 서비스가 꺼져 있거나 위치 서비스를 제공하지 않는 경우) 전달된 메서드가 그대로 허용됩니다.
이 속성의 기본값은 NoPositioningMethods 입니다.
참고: 하위 클래스 구현은 setPreferredPositioningMethods()
의 기본 구현을 호출하여 preferredPositioningMethods()
이 올바른 값을 반환하는지 확인해야 합니다.
supportedPositioningMethods()도 참조하세요 .
[read-only]
sourceName : const QString
이 속성은 사용 중인 포지션 소스 구현의 고유 이름을 보유합니다.
이 이름은 특정 위치 소스 구현의 새 인스턴스를 만들기 위해 createSource()에 전달할 수 있는 이름과 동일합니다.
함수 액세스:
QString | sourceName() const |
[bindable]
updateInterval : int
참고: 이 속성은 QProperty 바인딩을 지원합니다.
이 속성은 각 업데이트 사이에 요청된 간격을 밀리초 단위로 유지합니다.
업데이트 간격을 설정하지 않거나 0으로 설정하면 소스에서 필요한 만큼 자주 업데이트를 제공합니다.
업데이트 간격을 설정하면 소스는 가능한 한 요청된 간격에 가까운 간격으로 업데이트를 제공합니다. 요청된 간격이 minimumUpdateInterval()보다 작으면 최소 간격이 대신 사용됩니다.
업데이트 간격에 대한 변경은 가능한 한 빨리 이루어지지만 변경에 걸리는 시간은 구현마다 다를 수 있습니다. 이전 간격에서 경과된 시간을 새 간격의 일부로 계산할지 여부도 구현에 따라 다릅니다.
이 속성의 기본값은 0입니다.
참고: 하위 클래스 구현은 setUpdateInterval()
의 기본 구현을 호출해야 updateInterval()
에서 올바른 값을 반환할 수 있습니다.
참고: iOS 및 macOS에서는 API에서 이러한 가능성을 제공하지 않으므로 이 속성을 사용하여 업데이트 빈도를 조정할 수 없습니다. 이러한 시스템에서 이 매개변수는 UpdateTimeoutError 을 설정하고 원하는 간격 내에 업데이트가 수신되지 않을 경우 errorOccurred 신호를 트리거하는 데만 사용됩니다.
멤버 함수 문서
[explicit]
QGeoPositionInfoSource::QGeoPositionInfoSource(QObject *parent)
지정된 parent 로 위치 소스를 생성합니다.
[virtual noexcept]
QGeoPositionInfoSource::~QGeoPositionInfoSource()
위치 소스를 파괴합니다.
[static]
QStringList QGeoPositionInfoSource::availableSources()
사용 가능한 소스 플러그인 목록을 반환합니다. 여기에는 현재 플랫폼의 기본 백엔드 플러그인이 모두 포함됩니다.
[virtual, since Qt 5.14]
QVariant QGeoPositionInfoSource::backendProperty(const QString &name) const
name 라는 백엔드별 프로퍼티가 있는 경우 그 값을 반환합니다. 그렇지 않으면 반환된 값은 유효하지 않습니다. 지원되는 백엔드별 프로퍼티 목록과 설명은 Qt Positioning 플러그인#기본 플러그인에서 확인할 수 있습니다.
이 함수는 Qt 5.14에 도입되었습니다.
setBackendProperty 를참조하세요 .
[static]
QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(QObject *parent)
시스템의 기본 위치 데이터 소스 또는 사용 가능한 우선순위가 가장 높은 플러그인에서 읽은 parent 으로 위치 소스를 생성하고 반환합니다.
시스템에 기본 위치 소스가 없거나 유효한 플러그인을 찾을 수 없거나 사용자에게 현재 위치에 액세스할 수 있는 권한이 없는 경우 nullptr
을 반환합니다.
[static, since Qt 5.14]
QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(const QVariantMap ¶meters, QObject *parent)
시스템의 기본 위치 데이터 소스 또는 사용 가능한 우선순위가 가장 높은 플러그인에서 읽은 parent 으로 위치 소스를 생성하고 반환합니다.
시스템에 기본 위치 소스가 없거나 유효한 플러그인을 찾을 수 없거나 사용자에게 현재 위치에 액세스할 수 있는 권한이 없는 경우 nullptr
을 반환합니다.
이 메서드는 parameters 를 팩토리로 전달하여 소스를 구성합니다.
이 함수는 Qt 5.14에 도입되었습니다.
[static]
QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, QObject *parent)
sourceName 이라는 플러그인을 로드하여 주어진 parent 으로 위치 소스를 생성하고 반환합니다.
플러그인을 찾을 수 없으면 nullptr
을 반환합니다.
[static, since Qt 5.14]
QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, const QVariantMap ¶meters, QObject *parent)
sourceName 이라는 플러그인을 로드하여 주어진 parent 으로 위치 소스를 생성하고 반환합니다.
플러그인을 찾을 수 없으면 nullptr
을 반환합니다.
이 메서드는 parameters 을 팩토리로 전달하여 소스를 구성합니다.
이 함수는 Qt 5.14에 도입되었습니다.
[pure virtual]
QGeoPositionInfoSource::Error QGeoPositionInfoSource::error() const
마지막으로 발생한 오류 유형을 반환합니다.
참고: Qt6부터 startUpdates() 또는 requestUpdate()을 호출하면 마지막 오류는 항상 초기화됩니다.
[signal]
void QGeoPositionInfoSource::errorOccurred(QGeoPositionInfoSource::Error positioningError)
이 신호는 오류가 발생한 후에 전송됩니다. positioningError 매개 변수는 발생한 오류 유형을 설명합니다.
[pure virtual]
QGeoPositionInfo QGeoPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const
마지막으로 알려진 위치가 포함된 업데이트를 반환하거나, 사용할 수 없는 경우 null 업데이트를 반환합니다.
fromSatellitePositioningMethodsOnly 이 참이면 위성 위치 확인 방법에서 수신한 마지막으로 알려진 위치를 반환하고, 사용 가능한 위치가 없으면 null 업데이트가 반환됩니다.
[signal]
void QGeoPositionInfoSource::positionUpdated(const QGeoPositionInfo &update)
startUpdates() 또는 requestUpdate()이 호출되면 업데이트를 사용할 수 있게 되면 이 신호가 전송됩니다.
update 값은 새 업데이트의 값을 보유합니다.
[pure virtual slot]
void QGeoPositionInfoSource::requestUpdate(int timeout = 0)
현재 위치를 가져와 이 정보와 함께 positionUpdated()를 전송하려고 시도합니다. 지정된 timeout (밀리초) 내에 현재 위치를 찾을 수 없거나 timeout 이 minimumUpdateInterval()에서 반환한 값보다 작으면 UpdateTimeoutError 과 함께 errorOccurred() 신호가 전송됩니다.
시간 제한이 0이면 기본값은 소스에 적합한 합리적인 시간 제한 기간으로 설정됩니다.
다른 업데이트 요청이 진행 중이면 아무 일도 하지 않습니다. 그러나 startUpdates()가 이미 호출되어 정기 업데이트가 진행 중인 경우에도 호출할 수 있습니다.
소스가 여러 위치 지정 방법을 사용하는 경우 주어진 시간 제한 내에 가장 정확한 위치 지정 방법에서 현재 위치를 가져오려고 시도합니다.
참고: Qt6부터 이 메서드는 위치를 요청하기 전에 항상 마지막 오류를 NoError 로 재설정합니다.
참고: Android 서비스에서 이 메서드를 사용하는 방법을 이해하려면 Android에서Qt Positioning 을 참조하세요.
[virtual, since Qt 5.14]
bool QGeoPositionInfoSource::setBackendProperty(const QString &name, const QVariant &value)
name 이라는 백엔드 관련 속성을 value 으로 설정합니다. 성공하면 true
, 그렇지 않으면 false
을 반환합니다. 백엔드별 프로퍼티를 사용하여 런타임에 포지셔닝 하위 시스템 동작을 구성할 수 있습니다. 지원되는 백엔드별 프로퍼티 목록과 설명은 Qt Positioning 플러그인#기본 플러그인에서 확인할 수 있습니다.
이 기능은 Qt 5.14에 도입되었습니다.
backendProperty도 참조하십시오 .
[pure virtual slot]
void QGeoPositionInfoSource::startUpdates()
setUpdateInterval()에 지정된 대로 일정한 간격으로 업데이트를 내보내기 시작합니다.
setUpdateInterval()가 호출되지 않은 경우 소스는 업데이트를 사용할 수 있게 되는 즉시 업데이트를 전송합니다.
이 QGeoPositionInfoSource 서브클래스가 정기 업데이트를 제공할 수 없다고 판단하면 UpdateTimeoutError 신호가 포함된 errorOccurred() 신호가 전송됩니다. 이는 위성 수정이 손실되거나 하드웨어 오류가 감지된 경우 발생할 수 있습니다. 나중에 데이터를 사용할 수 있게 되면 위치 업데이트가 다시 시작됩니다. UpdateTimeoutError 오류는 정기 업데이트가 재개될 때까지 다시 발생하지 않습니다.
참고: Qt6부터 이 방법은 업데이트를 시작하기 전에 항상 마지막 오류를 NoError 로 초기화합니다.
참고: Android 서비스에서 이 메서드를 사용하는 방법을 이해하려면 Android에서Qt Positioning 을 참조하세요.
iOS의 경우 버전 8부터 코어 위치 프레임워크는 애플리케이션의 Info.plist에 NSLocationAlwaysUsageDescription 또는 NSLocationWhenInUseUsageDescription 키와 인증 프롬프트에 표시할 문자열을 추가로 입력해야 합니다. 앱이 포그라운드에 있는 동안 위치 서비스를 사용할 수 있는 권한을 요청할 때 NSLocationWhenInUseUsageDescription 키가 사용됩니다. 앱이 실행 중일 때마다(포그라운드 및 백그라운드 모두) 위치 서비스 사용 권한을 요청할 때 NSLocationAlwaysUsageDescription 키가 사용됩니다. 두 항목이 모두 정의되어 있는 경우 NSLocationWhenInUseUsageDescription이 포그라운드 모드에서 우선권을 갖습니다.
[pure virtual slot]
void QGeoPositionInfoSource::stopUpdates()
일정한 간격으로 업데이트 전송을 중지합니다.
[pure virtual]
QGeoPositionInfoSource::PositioningMethods QGeoPositionInfoSource::supportedPositioningMethods() const
이 소스에 사용 가능한 포지셔닝 메서드를 반환합니다. 사용 가능 여부는 이 함수를 호출하는 시점에 사용 가능한 것으로 정의됩니다. 따라서 위치 서비스를 끄거나 위성 기반 위치 제공업체로 제한하는 등의 사용자 설정이 이 함수에 반영됩니다. 상태 변경 시 런타임 알림은 supportedPositioningMethodsChanged()를 통해 받을 수 있습니다.
모든 플랫폼이 서로 다른 위치 추적 방법을 구분하거나 디바이스의 현재 사용자 구성을 전달하는 것은 아닙니다. 다음 표는 현재 플랫폼 상황에 대한 개요를 제공합니다:
플랫폼 | 간단한 설명 |
---|---|
Android | 위치 서비스가 활성화되면 개별 공급자 상태와 일반 위치 서비스 상태가 알려지고 전달됩니다. |
지오클루 | 항상 AllPositioningMethods 을 반환하도록 하드코킹되었습니다. |
GeoClue2 | 개별 공급자를 구분할 수 없지만 비활성화된 위치 서비스가 반영됩니다. |
iOS | 항상 AllPositioningMethods 을 반환하도록 하드코킹되었습니다. |
macOS | 항상 AllPositioningMethods 을 반환하도록 하드코킹되었습니다. |
Windows(UWP) | 개별 제공업체를 구분할 수 없지만 위치 서비스가 반영되지 않습니다. |
supportedPositioningMethodsChanged() 및 setPreferredPositioningMethods()도 참조하세요 .
[signal, since Qt 5.12]
void QGeoPositionInfoSource::supportedPositioningMethodsChanged()
이 신호는 지원되는 위치 추적 방법이 변경되었을 때 발생합니다. 변경의 원인은 사용자가 위치 서비스를 켜거나 끄거나 위치 서비스를 특정 유형(예: GPS 전용)으로 제한하는 것일 수 있습니다. 지원되는 위치추적 방법의 변경이 모든 플랫폼에서 감지되는 것은 아닙니다. supportedPositioningMethods()에서 현재 지원되는 플랫폼에 대한 개요를 확인할 수 있습니다.
이 기능은 Qt 5.12에 도입되었습니다.
© 2025 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.