Вы должны изменить исходный код плагина:
src/plugins/geoservices/osm/qgeocodingmanagerengineosm.cpp
src/plugins/geoservices/osm/qgeoroutingmanagerengineosm.cpp
src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp
src/plugins/geoservices/osm/qplacemanagerengineosm.cpp
В каждом из этих файлов есть QNetworkAccessManager, поэтому вы должны добавить следующий код:
#include <QtNetwork/QNetworkProxy>
// ...
// constructor
QString proxy = parameters.value(QStringLiteral("proxy")).toString();
if (!proxy.isEmpty()) {
#ifndef QT_NO_NETWORKPROXY
if (proxy.toLower() != QStringLiteral("system")) {
QUrl proxyUrl(proxy);
if (proxyUrl.isValid()) {
qDebug() << "Setting proxy to " << proxyUrl.toString();
m_networkManager->setProxy(
QNetworkProxy(QNetworkProxy::HttpProxy,
proxyUrl.host(),
proxyUrl.port(8080),
proxyUrl.userName(),
proxyUrl.password()));
}
} else if (QNetworkProxy::applicationProxy().type() == QNetworkProxy::NoProxy) {
QNetworkProxyFactory::setUseSystemConfiguration(true);
qDebug() << "Setting system proxy.";
}
#else
qDebug() << "No proxy support";
#endif
} else {
qDebug() << "No proxy parameter specified.";
}
Я создал патч для упрощения обновления, для него скачайте его с здесь .
Затем вы помещаете концы в папку src/plugins/geoservices/osm
, применяете патч, компилируете иустановить со следующим:
git clone -b 5.12.1 git@github.com:qt/qtlocation.git
cd qtlocation/src/plugins/geoservices/osm
wget https://raw.githubusercontent.com/eyllanesc/stackoverflow/master/questions/55105933/proxy-osm.patch
git apply proxy-osm.patch
qmake
make
sudo make install
Затем после этого вы можете использовать прокси с помощью параметра плагина:
Map {
Plugin {
id: mapPlugin
name: "osm"
PluginParameter { name: "proxy"; value: "http://179.179.253.147:8080" } // <---
}
anchors.fill: parent
plugin: mapPlugin
center: QtPositioning.coordinate(59.91, 10.75)
zoomLevel: 14
visible: true
}