次のコードを使用して、アプリの GeoLocation を取得します
QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(this);
if (source) {
source->setUpdateInterval(1000); // time in milliseconds
source->setPreferredPositioningMethods(QGeoPositionInfoSource::AllPositioningMethods);
connect(source, SIGNAL(positionUpdated(QGeoPositionInfo)), this, SLOT(positionUpdated(QGeoPositionInfo)));
source->startUpdates();
source->requestUpdate(30000);
const QGeoPositionInfo &info =source->lastKnownPosition();
ui->label->setText(QString("Latitude - %1 Longitude - %2").arg(info.coordinate().latitude()).arg(info.coordinate().longitude()));
}
このコードはシミュレーターで完全に実行され、シミュレーターによって提供される座標が得られますが、N900 で実行しようとすると機能しません。緯度と経度の座標ではなく、Nan を返します。電話の現在の GPS 信号の精度は粗いです。また、携帯電話の OVI Maps アプリでジオロケーションが機能しています。上記のコードが電話で地理位置情報を取得できないのに、シミュレーターで完全に機能する理由は何ですか?