首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt:移动性GeoLocation可以在模拟器上运行,但不能在N900上运行

Qt:移动性GeoLocation可以在模拟器上运行,但不能在N900上运行
EN

Stack Overflow用户
提问于 2010-09-20 16:42:35
回答 1查看 906关注 0票数 3

我使用以下代码为我的应用程序获取GeoLocation

代码语言:javascript
复制
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信号是粗略的精度。此外,geolocation在手机上的OVI地图应用程序中也起作用。你知道为什么上面的代码无法在手机上获取地理位置,但在模拟器上却可以很好地工作吗?

EN

回答 1

Stack Overflow用户

发布于 2010-09-21 09:57:06

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

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

你的positionUpdated()插槽会被调用吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3749826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档