void GPSWidget::initAreaMonitor() { // Create the area monitor monitor_ = QGeoAreaMonitor::createDefaultMonitor(this);//this // Connect the area monitoring signals to the corresponding slots QObject::connect(monitor_, SIGNAL(areaEntered(QGeoPositionInfo)), this, SLOT(areaEntered(QGeoPositionInfo))); QObject::connect(monitor_, SIGNAL(areaExited(QGeoPositionInfo)), this, SLOT(areaExited(QGeoPositionInfo))); QGeoCoordinate location(66.49154, 25.772982); monitor_->setCenter(location); monitor_->setRadius(100); }
void LocationQuest::initAreaMonitor() { // Create the area monitor monitor_ = QGeoAreaMonitor::createDefaultMonitor(this);//this // Connect the area monitoring signals to the corresponding slots QObject::connect(monitor_, SIGNAL(areaEntered(QGeoPositionInfo)), this, SLOT(areaEntered(QGeoPositionInfo))); QObject::connect(monitor_, SIGNAL(areaExited(QGeoPositionInfo)), this, SLOT(areaExited(QGeoPositionInfo))); monitor_->setCenter(questLocation_); monitor_->setRadius(range_); }
void QGeoAreaMonitorSimulator::positionUpdated(const QGeoPositionInfo &info) { qreal distance = info.coordinate().distanceTo(center()); if (distance <= QGeoAreaMonitor::radius()) { if(!insideArea) emit areaEntered(info); insideArea = true; } else if (insideArea) { emit areaExited(info); insideArea = false; } }
void QGeoAreaMonitorPolling::checkStartStop() { if (!location) return; if ((QObject::receivers(SIGNAL(areaEntered(QGeoPositionInfo))) > 0 || QObject::receivers(SIGNAL(areaExited(QGeoPositionInfo))) > 0) && QGeoAreaMonitor::center().isValid() && QGeoAreaMonitor::radius() > qreal(0.0)) { location->startUpdates(); } else { location->stopUpdates(); } }
int GPSWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: gpsData((*reinterpret_cast< QGeoCoordinate(*)>(_a[1]))); break; case 1: positionUpdated((*reinterpret_cast< QGeoPositionInfo(*)>(_a[1]))); break; case 2: areaEntered((*reinterpret_cast< const QGeoPositionInfo(*)>(_a[1]))); break; case 3: areaExited((*reinterpret_cast< const QGeoPositionInfo(*)>(_a[1]))); break; default: ; } _id -= 4; } return _id; }
void QGeoAreaMonitorPolling::disconnectNotify(const char *signal) { if (signal == SIGNAL(areaEntered(QGeoPositionInfo)) || signal == SIGNAL(areaExited(QGeoPositionInfo))) checkStartStop(); }