이 페이지에서

배치 (C++)

위치 지정

Qt Location (API)의 위치 정보(Positioning) 구성 요소는 특정 장소의 지리적 위치, 크기 및 주소를 다룹니다. 위치 정보에는 위도, 경도 및 고도(미터 단위)를 포함하는 ` QGeoCoordinate ` 클래스가 포함되어 있습니다. ` QGeoLocation `에는 ` QGeoCoordinate ` 외에도 주소 및 크기 정보(바운딩 박스)가 포함되어 있어, 위치가 단순한 수학적 점 이상의 의미를 가질 수 있습니다. 정의된 경계 상자 영역 안으로의 진입 또는 밖으로의 이탈을 모니터링할 수 있습니다. 또한 이 API를 통해 개발자는 위치 정보의 출처도 제어할 수 있습니다.

위치 데이터는 위도-경도 좌표로 제공되는 지구 표면의 정밀하게 지정된 위치와 다음과 같은 관련 데이터를 포함합니다:

  • 위치가 보고된 날짜 및 시간
  • 위치를 보고한 기기의 속도
  • 보고된 위치의 고도(해수면 위 높이)
  • 진북을 기준으로 한 기기의 방위각(도 단위)

이 데이터는 다양한 방법을 통해 추출할 수 있습니다. 가장 잘 알려진 위치 파악 방법 중 하나는 GPS(위성항법시스템)로, 지구 궤도를 도는 위성으로부터 수신된 전파 신호를 이용하여 수신기의 정확한 위치와 시간을 계산하는 공개적으로 이용 가능한 시스템입니다. 또 다른 널리 사용되는 방법은 '셀 식별자 위치 파악(Cell Identifier Positioning)'으로, 수신 기기에 현재 서비스를 제공하고 있는 기지국의 셀 식별자를 사용하여 대략적인 위치를 계산합니다. 이러한 위치 파악 방법과 그 밖의 방법들은 모두 Location 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_OBJECT
public:
    MyClass(QObject*parent = 0)
        : QObject(parent)
    {
        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는 항해 데이터를 지정하기 위한 일반적인 텍스트 기반 프로토콜입니다. 편의를 위해 ` QNmeaPositionInfoSource `가 제공되어 클라이언트 애플리케이션이 실시간 모드(예: GPS 장치에서 스트리밍할 때) 또는 시뮬레이션 모드(예: NMEA 로그 파일에서 읽을 때)에서 NMEA 데이터를 읽고 배포할 수 있습니다. 시뮬레이션 모드에서 소스는 각 NMEA 문장의 타임스탬프에 따라 업데이트를 전송하여 기록된 데이터의 “재생”을 생성합니다.

일반적으로 QGeoPositionInfoSource::createDefaultSource() 함수가 반환하는 기본 위치 소스와 QNmeaPositionInfoSource 클래스가 제공하는 기능만으로도 위치 데이터를 가져오기에 충분합니다. 하지만 경우에 따라 개발자는 자체적인 사용자 정의 위치 데이터 소스를 작성하고자 할 수도 있습니다.

'로그 파일 위치 소스(C++) ' 예제는 QGeoPositionInfoSource 의 서브클래스를 생성하여 사용자 정의 위치 소스를 만드는 방법을 보여줍니다.

예제

로그 파일 위치 소스 예제

'로그 파일 위치 소스 예제'는 ` QGeoPositionInfoSource `을 상속하여 사용자 정의 위치 지정 소스를 만드는 방법을 보여줍니다.

날씨 정보 예제

'날씨 정보 예제'는 QML용 C++ 플러그인에서 사용자의 현재 위치를 활용하여 웹 서비스에서 지역별 콘텐츠를 가져오는 방법을 보여줍니다.

위치 정보 클래스

QGeoAddress

QGeoLocation의 주소를 나타냅니다

QGeoAreaMonitorInfo

근접 여부를 모니터링할 영역 또는 지역의 매개변수를 설명합니다

QGeoAreaMonitorSource

지정된 좌표 집합에 대한 근접성 변화를 감지할 수 있게 합니다

QGeoCircle

원형 지리적 영역을 정의합니다

QGeoCoordinate

지구 표면상의 지리적 위치를 정의합니다

QGeoLocation

위치에 대한 기본 정보를 나타냅니다

QGeoPath

지리적 경로를 정의합니다

QGeoPolygon

지리적 다각형을 정의합니다

QGeoPositionInfo

특정 시점의 전역적 위치, 방향 및 속도에 대해 수집된 정보를 포함합니다

QGeoPositionInfoSource

위치 업데이트를 배포하기 위한 추상 기본 클래스

QGeoRectangle

직사각형 지리적 영역을 정의합니다

QGeoSatelliteInfo

위성에 대한 기본 정보를 포함합니다

QGeoSatelliteInfoSource

위성 정보 업데이트를 배포하기 위한 추상 기본 클래스

QGeoShape

지리적 영역을 정의합니다

QNmeaPositionInfoSource

NMEA 데이터 소스를 사용하는 위치 정보

QNmeaSatelliteInfoSource

NMEA 데이터 소스를 사용하는 위성 정보

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