diff options
author | Wolfgang Bremer <wolfgang@w-bremer.de> | 2015-04-20 05:09:09 +0200 |
---|---|---|
committer | Wolfgang Bremer <wolfgang.bremer@pelagicore.com> | 2015-05-08 16:21:33 +0000 |
commit | 3f697f6d73f0a7f10be90f48662f139a33d1781e (patch) | |
tree | 06c7c4066106aebe1ffe8a7fe47bb44656ccde25 /src/plugins/geoservices | |
parent | cee1591ffce5ba923375144108075fffd3ea70a7 (diff) | |
download | qtlocation-3f697f6d73f0a7f10be90f48662f139a33d1781e.tar.gz |
Allow custom URLs for OSM tiles
This enables the usage of various mapping services which use the OSM
API for tile distribution. One only needs to set the urlprefix
parameter to a correct url and the activeMapType to the "Custom URL
Map".
Task-number: QTBUG-32937
Change-Id: Ib24da19dc598ccc288047ce2651e6c1792ae2054
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Reviewed-by: Michal Klocek <michal.klocek@theqtcompany.com>
Diffstat (limited to 'src/plugins/geoservices')
6 files changed, 32 insertions, 1 deletions
diff --git a/src/plugins/geoservices/osm/qgeotiledmaposm.cpp b/src/plugins/geoservices/osm/qgeotiledmaposm.cpp index c2407d1d..16f99cdd 100644 --- a/src/plugins/geoservices/osm/qgeotiledmaposm.cpp +++ b/src/plugins/geoservices/osm/qgeotiledmaposm.cpp @@ -39,7 +39,7 @@ QT_BEGIN_NAMESPACE QGeoTiledMapOsm::QGeoTiledMapOsm(QGeoTiledMappingManagerEngineOsm *engine, QObject *parent) -: QGeoTiledMap(engine, parent), m_mapId(-1) +: QGeoTiledMap(engine, parent), m_mapId(-1), m_customCopyright(engine->customCopyright()) { } @@ -73,6 +73,9 @@ void QGeoTiledMapOsm::evaluateCopyrights(const QSet<QGeoTileSpec> &visibleTiles) // set attribution to Thunder Forest copyrights = tr("Maps © <a href='http://www.thunderforest.com/'>Thunderforest</a><br/>Data © <a href='http://www.openstreetmap.org/copyright'>OpenStreetMap</a> contributors"); break; + case 8: + copyrights = m_customCopyright; + break; default: // set attribution to OSM copyrights = tr("© <a href='http://www.openstreetmap.org/copyright'>OpenStreetMap</a> contributors"); diff --git a/src/plugins/geoservices/osm/qgeotiledmaposm.h b/src/plugins/geoservices/osm/qgeotiledmaposm.h index 0314d9ae..86a52229 100644 --- a/src/plugins/geoservices/osm/qgeotiledmaposm.h +++ b/src/plugins/geoservices/osm/qgeotiledmaposm.h @@ -52,6 +52,7 @@ protected: private: int m_mapId; + const QString m_customCopyright; }; QT_END_NAMESPACE diff --git a/src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp b/src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp index 973a7437..873e59de 100644 --- a/src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp +++ b/src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp @@ -60,6 +60,8 @@ QGeoTiledMappingManagerEngineOsm::QGeoTiledMappingManagerEngineOsm(const QVarian mapTypes << QGeoMapType(QGeoMapType::TransitMap, tr("Night Transit Map"), tr("Public transit map view in night mode"), false, true, 5); mapTypes << QGeoMapType(QGeoMapType::TerrainMap, tr("Terrain Map"), tr("Terrain map view"), false, false, 6); mapTypes << QGeoMapType(QGeoMapType::PedestrianMap, tr("Hiking Map"), tr("Hiking map view"), false, false, 7); + if (parameters.contains(QStringLiteral("mapping.host"))) + mapTypes << QGeoMapType(QGeoMapType::CustomMap, tr("Custom URL Map"), tr("Custom url map view set via urlprefix parameter"), false, false, 8); setSupportedMapTypes(mapTypes); QGeoTileFetcherOsm *tileFetcher = new QGeoTileFetcherOsm(this); @@ -67,6 +69,12 @@ QGeoTiledMappingManagerEngineOsm::QGeoTiledMappingManagerEngineOsm(const QVarian const QByteArray ua = parameters.value(QStringLiteral("useragent")).toString().toLatin1(); tileFetcher->setUserAgent(ua); } + if (parameters.contains(QStringLiteral("mapping.host"))) { + const QString up = parameters.value(QStringLiteral("mapping.host")).toString().toLatin1(); + tileFetcher->setUrlPrefix(up); + } + if (parameters.contains(QStringLiteral("mapping.copyright"))) + m_customCopyright = parameters.value(QStringLiteral("mapping.copyright")).toString().toLatin1(); setTileFetcher(tileFetcher); @@ -83,4 +91,9 @@ QGeoMap *QGeoTiledMappingManagerEngineOsm::createMap() return new QGeoTiledMapOsm(this); } +QString QGeoTiledMappingManagerEngineOsm::customCopyright() const +{ + return m_customCopyright; +} + QT_END_NAMESPACE diff --git a/src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.h b/src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.h index fab4f483..c32dbea8 100644 --- a/src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.h +++ b/src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.h @@ -50,6 +50,10 @@ public: ~QGeoTiledMappingManagerEngineOsm(); QGeoMap *createMap(); + QString customCopyright() const; + +private: + QString m_customCopyright; }; QT_END_NAMESPACE diff --git a/src/plugins/geoservices/osm/qgeotilefetcherosm.cpp b/src/plugins/geoservices/osm/qgeotilefetcherosm.cpp index ad042659..95a4355e 100644 --- a/src/plugins/geoservices/osm/qgeotilefetcherosm.cpp +++ b/src/plugins/geoservices/osm/qgeotilefetcherosm.cpp @@ -51,6 +51,11 @@ void QGeoTileFetcherOsm::setUserAgent(const QByteArray &userAgent) m_userAgent = userAgent; } +void QGeoTileFetcherOsm::setUrlPrefix(const QString &urlPrefix) +{ + m_urlPrefix = urlPrefix; +} + QGeoTiledMapReply *QGeoTileFetcherOsm::getTileImage(const QGeoTileSpec &spec) { QNetworkRequest request; @@ -80,6 +85,9 @@ QGeoTiledMapReply *QGeoTileFetcherOsm::getTileImage(const QGeoTileSpec &spec) case 7: urlPrefix = QStringLiteral("http://a.tile.thunderforest.com/outdoors/"); break; + case 8: + urlPrefix = m_urlPrefix; + break; default: qWarning("Unknown map id %d\n", spec.mapId()); } diff --git a/src/plugins/geoservices/osm/qgeotilefetcherosm.h b/src/plugins/geoservices/osm/qgeotilefetcherosm.h index d36a97de..2f61f8f7 100644 --- a/src/plugins/geoservices/osm/qgeotilefetcherosm.h +++ b/src/plugins/geoservices/osm/qgeotilefetcherosm.h @@ -49,12 +49,14 @@ public: QGeoTileFetcherOsm(QObject *parent = 0); void setUserAgent(const QByteArray &userAgent); + void setUrlPrefix(const QString &urlPrefix); private: QGeoTiledMapReply *getTileImage(const QGeoTileSpec &spec); QNetworkAccessManager *m_networkManager; QByteArray m_userAgent; + QString m_urlPrefix; }; QT_END_NAMESPACE |