Я пытаюсь получить доступ к координатам MapQuickItem
в QML из С++. Широта имеет 9 десятичных цифр, а долгота — 8 десятичных цифр. Но если я попытаюсь получить к ним доступ с помощью latitude()
, я потеряю последние 5 знаков после запятой. Если я попытаюсь использовать toString(QGeoCoordinate::Degrees)
, я получу только 5 десятичных цифр. Но когда я распечатываю QGeoCoordinate
напрямую, используя qInfo()
, отображаются все 9 цифр.
Есть ли способ получить выходные данные qInfo()
и сохранить их внутри QString
или иным образом получить полные десятичные разряды широты и долготы?
С++:
QObject *pin = qvariant_cast<QObject *>(mapObject -> property("destination"));
QGeoCoordinate dest = qvariant_cast<QGeoCoordinate>(pin->property("coordinate"));
qInfo() << "dest: " << dest;
qInfo() << dest.toString(QGeoCoordinate::Degrees);
qInfo() << dest.latitude();
qInfo() << dest.longitude();
Выход:
dest: QGeoCoordinate(33.751513868, -118.1781581, 0)
"33.75151°, -118.17816°, 0m"
33.7515
-118.178
Вы можете использовать либо qSetRealNumberPrecision , либо QString::number.
double d = 123456789.987654321;
qInfo() << qSetRealNumberPrecision(15) << d;
qInfo() << QString::number(d, 'f', 6);
Выход
123456789.987654
"123456789.987654"
QGeoCoordinate coordinate(33.751513868, -118.1781581, 0);
qInfo() << coordinate;
qInfo() << qSetRealNumberPrecision(11) << coordinate.latitude()
<< coordinate.longitude();
qInfo() << QString::number(coordinate.latitude(), 'f', 9)
<< QString::number(coordinate.longitude(), 'f', 9);
Выход
QGeoCoordinate(33.751513868, -118.1781581, 0)
33.751513868 -118.1781581
"33.751513868" "-118.178158100"