포지셔닝(C++)
포지셔닝
Qt Location API의 포지셔닝 컴포넌트는 특정 장소의 지리적 위치, 크기, 주소에 관한 것입니다. QGeoCoordinate 클래스에는 위도, 경도 및 고도(미터)가 포함된 QGeoLocation 클래스가 포함되어 있으며, QGeoCoordinate 에는 주소와 크기 정보(바운딩 박스)가 포함되어 있어 위치가 수학적 점 이상이 될 수 있습니다. 정의된 바운딩 박스 영역 안팎의 움직임을 모니터링할 수 있습니다. 또한 API를 통해 개발자는 위치 정보의 출처도 제어할 수 있습니다.
위치 데이터에는 위도-경도 좌표로 제공되는 지구 표면의 정확한 위치와 함께 다음과 같은 관련 데이터가 포함됩니다:
- 위치가 보고된 날짜와 시간
- 위치를 보고한 디바이스의 속도
- 신고된 위치의 고도(해발 고도)
- 진북을 기준으로 한 디바이스의 방위(도)
이 데이터는 다양한 방법을 통해 추출할 수 있습니다. 가장 잘 알려진 위치추적 방법 중 하나는 지구 궤도를 도는 위성에서 수신한 전파 신호를 사용하여 수신기의 정확한 위치와 시간을 계산하는 공개적으로 사용 가능한 시스템인 GPS(Global Positioning System)입니다. 또 다른 널리 사용되는 방법은 '셀 식별자 포지셔닝'으로, 현재 수신 장치에 서비스를 제공하고 있는 셀 사이트의 셀 식별자를 사용하여 대략적인 위치를 계산하는 방법입니다. 이러한 방법과 기타 위치 측위 방법은 모두 위치 API에서 사용할 수 있으며, API 내의 위치 데이터 소스에 대한 유일한 요구 사항은 위도-경도 좌표와 날짜/시간 값을 제공하고 위에 나열된 다른 속성을 제공할 수 있는 옵션만 제공해야 한다는 것입니다.
위치 데이터 소스는 QGeoPositionInfoSource 을 서브클래싱하고 QGeoPositionInfoSource::positionUpdated() 신호를 통해 QGeoPositionInfo 객체를 제공함으로써 생성됩니다. 위치 데이터가 필요한 클라이언트는 positionUpdated() 시그널에 연결하고 startUpdates() 또는 requestUpdate()를 호출하여 위치 데이터 배포를 트리거할 수 있습니다. stopUpdates () 함수를 호출하여 위치 데이터 배포를 중지할 수 있습니다.
일부 플랫폼에서는 기본 위치 소스를 사용할 수 있습니다. QGeoPositionInfoSource::createDefaultSource ()를 호출하여 기본 위치 소스의 인스턴스를 만듭니다. 플랫폼에 기본 소스를 사용할 수 없는 경우 이 메서드는 nullptr
을 반환합니다.
정보 소스에 액세스하는 데 문제가 발생하면 errorOccurred() 신호가 전송됩니다.
QGeoAreaMonitorSource 클래스를 사용하면 좌표와 반경으로 지정된 특정 영역으로 수신 디바이스가 이동했을 때 클라이언트 애플리케이션에 알림을 받을 수 있습니다. 플랫폼이 영역 모니터링을 기본적으로 지원하는 경우 QGeoAreaMonitorSource::createDefaultSource() 메서드는 기본 영역 모니터의 인스턴스를 반환합니다.
QGeoSatelliteInfoSource 클래스를 통해 위성 정보를 배포할 수도 있습니다. QGeoSatelliteInfoSource::createDefaultSource ()를 호출하여 플랫폼의 기본 위성 데이터 소스 인스턴스를 만들 수 있는 경우 인스턴스를 생성합니다. 또는 클라이언트가 이 클래스를 서브클래싱하여 사용자 지정 위성 데이터 소스를 제공할 수도 있습니다.
데이터 소스에서 위치 데이터 요청하기
소스에서 데이터를 받으려면 positionUpdated() 신호에 연결한 다음 startUpdates() 또는 requestUpdate()를 호출하여 시작합니다.
다음은 QGeoPositionInfoSource::createDefaultSource()에서 반환되는 기본 위치 데이터 소스에서 데이터를 수신하는 클라이언트의 예입니다:
class MyClass : public QObject { Q_OBJECTpublic: MyClass(QObject *parent = 0) : QObject(부모) { 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; } };
데이터 소스의 측면 제어
QGeoPositionInfoSource::setUpdateInterval() 메서드는 위치 업데이트 수신 속도를 제어하는 데 사용할 수 있습니다. 예를 들어 클라이언트 애플리케이션이 30초에 한 번만 업데이트가 필요한 경우 setUpdateInterval(30000)
를 호출할 수 있습니다. 업데이트 간격을 설정하지 않거나 setUpdateInterval() 값이 0으로 호출되면 소스에서 기본 간격 또는 기타 내부 논리를 사용하여 업데이트 제공 시기를 결정합니다.
QGeoPositionInfoSource::setPreferredPositioningMethods()를 사용하면 클라이언트 애플리케이션이 특정 유형의 위치 지정 방법을 사용하도록 요청할 수 있습니다. 예를 들어 애플리케이션이 상당히 정밀한 실외 위치 정보를 제공하지만 전력 리소스를 많이 사용할 수 있는 위성 위치 정보만 사용하는 것을 선호하는 경우 QGeoPositionInfoSource::SatellitePositioningMethods 값으로 이 메서드를 호출할 수 있습니다. 그러나 이 방법은 특수 클라이언트 애플리케이션에서만 사용해야 하며, 대부분의 경우 소스가 내부적으로 애플리케이션에 유용할 수 있는 다양한 포지셔닝 방법을 사용할 수 있으므로 기본 포지셔닝 방법을 변경해서는 안 됩니다.
NMEA 데이터
NMEA는 내비게이션 데이터를 지정하기 위한 일반적인 텍스트 기반 프로토콜입니다. 편의를 위해 클라이언트 애플리케이션이 실시간 모드(예: GPS 장치에서 스트리밍할 때) 또는 시뮬레이션 모드(예: NMEA 로그 파일에서 읽을 때)에서 NMEA 데이터를 읽고 배포할 수 있도록 QNmeaPositionInfoSource 이 제공됩니다. 시뮬레이션 모드에서 소스는 각 NMEA 문장의 타임스탬프에 따라 업데이트를 전송하여 기록된 데이터의 '재생'을 생성합니다.
일반적으로 QGeoPositionInfoSource::createDefaultSource()에서 반환되는 기본 위치 소스에서 제공하는 기능과 QNmeaPositionInfoSource 클래스는 위치 데이터를 검색하는 데 충분합니다. 그러나 경우에 따라 개발자가 직접 사용자 정의 위치 데이터 소스를 작성하고 싶을 수도 있습니다.
로그 파일 위치 소스(C++) 예제에서는 QGeoPositionInfoSource 클래스를 서브클래스화하여 사용자 정의 위치 소스를 만드는 방법을 보여줍니다.
예제
로그 파일 위치 소스 예제
로그 파일 위치 소스 예제는 QGeoPositionInfoSource 을 서브클래스화하여 사용자 정의 위치 소스를 만드는 방법을 보여줍니다.
날씨 정보 예제
날씨 정보 예제는 사용자의 현재 위치를 사용하여 웹 서비스에서 로컬 콘텐츠를 검색하는 방법을 QML용 C++ 플러그인에서 보여줍니다.
포지셔닝 클래스
QGeoLocation의 주소를 나타냅니다. | |
근접성을 모니터링할 지역 또는 영역의 매개변수를 설명합니다. | |
지정된 좌표 집합에 대한 근접성 변화를 감지할 수 있습니다. | |
원형 지리적 영역 정의 | |
지구 표면의 지리적 위치를 정의합니다. | |
위치에 대한 기본 정보를 나타냅니다. | |
지리적 경로를 정의합니다. | |
지리적 다각형을 정의합니다. | |
특정 시점의 전 세계 위치, 방향 및 속도에 대해 수집된 정보를 포함합니다. | |
위치 업데이트 배포를 위한 추상 베이스 클래스 | |
직사각형 지리적 영역을 정의합니다. | |
위성에 대한 기본 정보를 포함합니다. | |
위성 정보 업데이트 배포를 위한 추상 베이스 클래스 | |
지리적 영역을 정의합니다. | |
NMEA 데이터 소스를 사용한 위치 정보 | |
NMEA 데이터 소스를 사용한 위성 정보 |
© 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.