gpt4 book ai didi

Qt:Mobility GeoLocation 适用于模拟器但不适用于 N900

转载 作者:行者123 更新时间:2023-12-02 02:31:07 25 4
gpt4 key购买 nike

我使用以下代码为我的应用获取 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 map 应用程序中使用。知道为什么上面的代码无法在手机上获取地理位置,但在模拟器上却能完美运行吗?

最佳答案

您应该从插槽中为 positionUpdated() 设置标签,因为当收到更新时会触发信号。您对 requestUpdate() 的调用也会触发 positionUpdated() 信号。如果它在您的超时设置后没有得到更新,它将发出 requestTimeout() 信号,您可能希望将其连接到一个插槽以供引用。很可能当您检索 lastKnownPosition() 时,尚未确定任何位置并且返回的值为空值。仅从文档中很难确定,但我认为这意味着 requestUpdate() 将始终立即返回,而不是在成功收到更新后返回,因此您应该调用 source->lastKnownPosition。 isValid() 看是否包含好的位置。

您真的应该检查 positionUpdated() 插槽中的位置,或者至少在该插槽被调用一次之后检查位置。模拟器很可能有一个位置可以立即使用并且在这种情况下可以工作。

您的 positionUpdated() 插槽是否被调用过?

关于Qt:Mobility GeoLocation 适用于模拟器但不适用于 N900,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3749826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com