4#include <QtCore/qlist.h>
5#include <QtCore/qjsonarray.h>
6#include <QtCore/qjsondocument.h>
7#include <QtCore/qjsonobject.h>
8#include <QtPositioning/qgeolocation.h>
9#include <qgeocodereplyohosmapkit.h>
10#include <qohosmapkitcommon.h>
18 QList<QGeoLocation> results;
20 if (responseBodyJsonObj.contains(QStringLiteral(
"sites"))) {
21 const auto sites = responseBodyJsonObj.value(QStringLiteral(
"sites")).toArray();
22 for (
const auto &siteValue : sites)
23 if (siteValue.isObject())
24 results.append(OhosMapKit::SiteJson::tryConvertToQGeoLocation(siteValue.toObject()));
36 void onNetworkReplyFinished();
37 void onNetworkReplyError(QNetworkReply::NetworkError error);
43 if (reply ==
nullptr) {
44 setError(QGeoCodeReply::UnknownError, tr(
"Null reply"));
49 connect(reply, &QNetworkReply::errorOccurred,
this, &QGeoCodeReplyOhosMapKit::onNetworkReplyError);
50 connect(
this, &QGeoCodeReply::aborted, reply, &QNetworkReply::abort);
51 connect(
this, &QObject::destroyed, reply, &QObject::deleteLater);
56 auto *reply =
static_cast<QNetworkReply *>(sender());
59 if (reply->error() != QNetworkReply::NoError) {
61 QGeoCodeReply::CommunicationError,
62 tr(
"Network reply error: %1").arg(reply->errorString()));
66 auto responseBodyJsonDoc = QJsonDocument::fromJson(reply->readAll());
67 if (!responseBodyJsonDoc.isObject()) {
68 setError(QGeoCodeReply::ParseError, tr(
"Response parse error"));
72 setLocations(parseGeocodeResponse(responseBodyJsonDoc.object()));
81 auto *reply =
static_cast<QNetworkReply *>(sender());
83 setError(QGeoCodeReply::CommunicationError, reply->errorString());
QGeoCodeReplyOhosMapKit(QNetworkReply *reply, QObject *parent)
Combined button and popup list for selecting options.
QList< QGeoLocation > parseGeocodeResponse(const QJsonObject &responseBodyJsonObj)
QGeoCodeReply * makeQGeoCodeReplyOhosMapKit(QNetworkReply *reply, QObject *parent)