44 QNetworkAccessManager *nm, QGeoMappingManagerEngine *parent)
51 m_nm->setParent(
this);
52 for (QGeoTileProviderOsm *provider : m_providers) {
53 if (!provider->isResolved()) {
55 connect(provider, &QGeoTileProviderOsm::resolutionFinished,
56 this, &QGeoTileFetcherOsm::onProviderResolutionFinished);
57 connect(provider, &QGeoTileProviderOsm::resolutionError,
58 this, &QGeoTileFetcherOsm::onProviderResolutionError);
59 connect(provider, &QGeoTileProviderOsm::resolutionRequired,
60 this, &QGeoTileFetcherOsm::restartTimer, Qt::QueuedConnection);
61 provider->resolveProvider();
111 int id = spec.mapId();
112 if (id < 1 || id > m_providers.size()) {
113 qWarning(
"Unknown map id %d\n", spec.mapId());
114 if (m_providers.isEmpty())
121 if (spec.zoom() > m_providers[id]->maximumZoomLevel() || spec.zoom() < m_providers[id]->minimumZoomLevel())
124 const QUrl url = m_providers[id]->tileAddress(spec.x(), spec.y(), spec.zoom());
125 QNetworkRequest request;
126 request.setHeader(QNetworkRequest::UserAgentHeader, m_userAgent);
128 QNetworkReply *reply = m_nm->get(request);
129 return new QGeoMapReplyOsm(reply, spec, m_providers[id]->format());