Вы должны установить метку из слота для positionUpdated()
, так как сигнал запускается при получении обновления.Ваш звонок на requestUpdate()
также вызывает сигнал positionUpdated()
.Если он не получит обновление после установки тайм-аута, он выдаст сигнал requestTimeout()
, к которому вы можете подключить слот для информационных целей.Вполне вероятно, что при извлечении lastKnownPosition()
позиция еще не определена, и возвращаемое значение является нулевым значением.Трудно быть уверенным только из документации, но я думаю, что это подразумевает, что requestUpdate()
всегда будет возвращаться немедленно, а не после того, как оно успешно получит обновление, поэтому вы должны позвонить source->lastKnownPosition.isValid()
, чтобы узнать, содержит ли оно хорошую позицию.
Вы действительно должны проверять положение в слоте positionUpdated()
или после того, как этот слот был вызван хотя бы один раз.Скорее всего, у симулятора есть доступная позиция, и в этом случае он работает.
Ваш слот positionUpdated()
когда-нибудь вызывался?