45 lines
1.1 KiB
C++
45 lines
1.1 KiB
C++
#include "gpsposition.h"
|
|
|
|
GPSPosition::GPSPosition(QObject *parent) :
|
|
QObject(parent) {
|
|
tolerance = 50;
|
|
location = QGeoPositionInfoSource::createDefaultSource(this);
|
|
connect(location, SIGNAL(positionUpdated(QGeoPositionInfo)), this, SLOT(onPositionUpdated(QGeoPositionInfo)));
|
|
location->startUpdates();
|
|
location->setUpdateInterval(30000);
|
|
location->requestUpdate();
|
|
}
|
|
|
|
qreal GPSPosition::getLatitude() const {
|
|
return coordinate.latitude();
|
|
}
|
|
|
|
qreal GPSPosition::getLongitude() const {
|
|
return coordinate.longitude();
|
|
}
|
|
|
|
void GPSPosition::setTolerance(qreal newTolerance) {
|
|
tolerance = newTolerance;
|
|
}
|
|
|
|
QGeoCoordinate GPSPosition::getCoordinate() const {
|
|
return coordinate;
|
|
}
|
|
|
|
void GPSPosition::onPositionUpdated(QGeoPositionInfo position) {
|
|
coordinate = position.coordinate();
|
|
if (coordinate.distanceTo(lastEmitted) > tolerance) {
|
|
lastEmitted = coordinate;
|
|
emit movedTolerance();
|
|
}
|
|
qDebug() << "Position updated : " << coordinate;
|
|
}
|
|
|
|
GPSPosition& GPSPosition::getInstance() {
|
|
static GPSPosition instance;
|
|
return instance;
|
|
}
|
|
|
|
void GPSPosition::requestUpdate() {
|
|
location->requestUpdate();
|
|
}
|