diff --git a/src/JsonHelper.cc b/src/JsonHelper.cc index 8d44bcb09c68b0e3791de3abb073976314b964cc..f7dcc76089092a8bad273a031d9096bf0115cfa1 100644 --- a/src/JsonHelper.cc +++ b/src/JsonHelper.cc @@ -63,20 +63,15 @@ bool JsonHelper::loadGeoCoordinate(const QJsonValue& jsonValue, } foreach(const QJsonValue& jsonValue, coordinateArray) { - if (jsonValue.type() != QJsonValue::Double) { + if (jsonValue.type() != QJsonValue::Double && jsonValue.type() != QJsonValue::Null) { errorString = QObject::tr("Coordinate array may only contain double values, found: %1").arg(jsonValue.type()); return false; } } - coordinate = QGeoCoordinate(coordinateArray[0].toDouble(), coordinateArray[1].toDouble()); + coordinate = QGeoCoordinate(possibleNaNJsonValue(coordinateArray[0]), possibleNaNJsonValue(coordinateArray[1])); if (altitudeRequired) { - coordinate.setAltitude(coordinateArray[2].toDouble()); - } - - if (!coordinate.isValid()) { - errorString = QObject::tr("Coordinate is invalid: %1").arg(coordinate.toString()); - return false; + coordinate.setAltitude(possibleNaNJsonValue(coordinateArray[2])); } return true;