QGeoMappingManagerEngineOsm::QGeoMappingManagerEngineOsm(const QMap<QString, QVariant> ¶meters, QGeoServiceProvider::Error *error, QString *errorString) : QGeoTiledMappingManagerEngine(parameters), m_parameters(parameters) { Q_UNUSED(error) Q_UNUSED(errorString) setTileSize(QSize(256,256)); setMinimumZoomLevel(0.0); setMaximumZoomLevel(18.0); m_tyleStyleId = "1"; QList<QGraphicsGeoMap::MapType> types; types << QGraphicsGeoMap::StreetMap; types << QGraphicsGeoMap::TerrainMap; // used for cyclemap types << TRANSITMAP; setSupportedMapTypes(types); m_nam = new QNetworkAccessManager(this); #ifdef USE_NETWORK_CACHE m_cache = new QNetworkDiskCache(this); QDir dir = QDir::temp(); dir.mkdir("maptiles-osm"); dir.cd("maptiles-osm"); m_cache->setCacheDirectory(dir.path()); #endif QList<QString> keys = m_parameters.keys(); if (keys.contains("mapping.proxy")) { QString proxy = m_parameters.value("mapping.proxy").toString(); if (!proxy.isEmpty()) m_nam->setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, proxy, 8080)); } #ifdef USE_NETWORK_CACHE if (keys.contains("mapping.cache.directory")) { QString cacheDir = m_parameters.value("mapping.cache.directory").toString(); if (!cacheDir.isEmpty()) m_cache->setCacheDirectory(cacheDir); } if (keys.contains("mapping.cache.size")) { bool ok = false; qint64 cacheSize = m_parameters.value("mapping.cache.size").toString().toLongLong(&ok); if (ok) m_cache->setMaximumCacheSize(cacheSize); } m_nam->setCache(m_cache); #endif }
WhiteTileEngine::WhiteTileEngine(const QMap<QString, QVariant> ¶meters, QObject *parent) : QGeoTiledMappingManagerEngine(parameters, parent) { setTileSize(QSize(128,128)); setMinimumZoomLevel(0.0); setMaximumZoomLevel(3.0); QList<QGraphicsGeoMap::MapType> types; types << QGraphicsGeoMap::StreetMap; types << QGraphicsGeoMap::TerrainMap; setSupportedMapTypes(types); QList<QGraphicsGeoMap::ConnectivityMode> modes; modes << QGraphicsGeoMap::OfflineMode; setSupportedConnectivityModes(modes); }
/*! \internal this function will only be ever called once */ void QDeclarativeGeoMap::mappingManagerInitialized() { m_mappingManagerInitialized = true; m_map = m_mappingManager->createMap(this); m_gestureArea->setMap(m_map); // once mappingManagerInitilized_ is set zoomLevel() returns the default initialised // zoom level of the map controller. Overwrite it here to whatever the user chose. m_map->mapController()->setZoom(m_zoomLevel); //The zoom level limits are only restricted by the plugins values, if the user has set a more //strict zoom level limit before initialization nothing is done here. if (m_mappingManager->cameraCapabilities().minimumZoomLevel() > m_gestureArea->minimumZoomLevel()) setMinimumZoomLevel(m_mappingManager->cameraCapabilities().minimumZoomLevel()); if (m_gestureArea->maximumZoomLevel() < 0 || m_mappingManager->cameraCapabilities().maximumZoomLevel() < m_gestureArea->maximumZoomLevel()) setMaximumZoomLevel(m_mappingManager->cameraCapabilities().maximumZoomLevel()); m_map->setActiveMapType(QGeoMapType()); m_copyrights = new QDeclarativeGeoMapCopyrightNotice(this); connect(m_map, SIGNAL(copyrightsChanged(QImage)), m_copyrights.data(), SLOT(copyrightsChanged(QImage))); connect(m_map, SIGNAL(copyrightsChanged(QString)), m_copyrights.data(), SLOT(copyrightsChanged(QString))); connect(m_copyrights.data(), SIGNAL(linkActivated(QString)), this, SIGNAL(copyrightLinkActivated(QString))); connect(m_map, SIGNAL(updateRequired()), this, SLOT(update())); connect(m_map->mapController(), SIGNAL(centerChanged(QGeoCoordinate)), this, SLOT(mapCenterChanged(QGeoCoordinate))); connect(m_map->mapController(), SIGNAL(zoomChanged(qreal)), this, SLOT(mapZoomLevelChanged(qreal))); m_map->mapController()->setCenter(m_center); QList<QGeoMapType> types = m_mappingManager->supportedMapTypes(); for (int i = 0; i < types.size(); ++i) { QDeclarativeGeoMapType *type = new QDeclarativeGeoMapType(types[i], this); m_supportedMapTypes.append(type); } if (!m_supportedMapTypes.isEmpty()) { QDeclarativeGeoMapType *type = m_supportedMapTypes.at(0); m_activeMapType = type; m_map->setActiveMapType(type->mapType()); } // Map tiles are built in this call m_map->resize(width(), height()); // This prefetches a buffer around the map m_map->prefetchData(); m_map->update(); connect(m_mappingManager, SIGNAL(supportedMapTypesChanged()), this, SLOT(onSupportedMapTypesChanged())); emit minimumZoomLevelChanged(); emit maximumZoomLevelChanged(); emit supportedMapTypesChanged(); emit activeMapTypeChanged(); // Any map items that were added before the plugin was ready // need to have setMap called again foreach (const QPointer<QDeclarativeGeoMapItemBase> &item, m_mapItems) { if (item) item.data()->setMap(this, m_map); } }
/*! \internal this function will only be ever called once */ void QDeclarativeGeoMap::mappingManagerInitialized() { mappingManagerInitialized_ = true; map_ = mappingManager_->createMap(this); gestureArea_->setMap(map_); //The zoom level limits are only restricted by the plugins values, if the user has set a more //strict zoom level limit before initialization nothing is done here. if (mappingManager_->cameraCapabilities().minimumZoomLevel() > gestureArea_->minimumZoomLevel()) setMinimumZoomLevel(mappingManager_->cameraCapabilities().minimumZoomLevel()); if (gestureArea_->maximumZoomLevel() < 0 || mappingManager_->cameraCapabilities().maximumZoomLevel() < gestureArea_->maximumZoomLevel()) setMaximumZoomLevel(mappingManager_->cameraCapabilities().maximumZoomLevel()); map_->setActiveMapType(QGeoMapType()); copyrightsWPtr_ = new QDeclarativeGeoMapCopyrightNotice(this); connect(map_, SIGNAL(copyrightsChanged(QImage,QPoint)), copyrightsWPtr_.data(), SLOT(copyrightsChanged(QImage,QPoint))); connect(map_, SIGNAL(updateRequired()), this, SLOT(update())); connect(map_->mapController(), SIGNAL(centerChanged(QGeoCoordinate)), this, SIGNAL(centerChanged(QGeoCoordinate))); connect(map_->mapController(), SIGNAL(zoomChanged(qreal)), this, SLOT(mapZoomLevelChanged(qreal))); map_->mapController()->setCenter(center_); map_->mapController()->setZoom(zoomLevel_); QList<QGeoMapType> types = mappingManager_->supportedMapTypes(); for (int i = 0; i < types.size(); ++i) { QDeclarativeGeoMapType *type = new QDeclarativeGeoMapType(types[i], this); supportedMapTypes_.append(type); } if (!supportedMapTypes_.isEmpty()) { QDeclarativeGeoMapType *type = supportedMapTypes_.at(0); activeMapType_ = type; map_->setActiveMapType(type->mapType()); } // Map tiles are built in this call map_->resize(width(), height()); // This prefetches a buffer around the map map_->cameraStopped(); map_->update(); emit minimumZoomLevelChanged(); emit maximumZoomLevelChanged(); emit supportedMapTypesChanged(); emit activeMapTypeChanged(); // Any map items that were added before the plugin was ready // need to have setMap called again foreach (const QPointer<QDeclarativeGeoMapItemBase> &item, mapItems_) { if (item) item.data()->setMap(this, map_); } }
QGeoMappingManagerEngineGoogle::QGeoMappingManagerEngineGoogle(const QMap<QString, QVariant> ¶meters, QGeoServiceProvider::Error *error, QString *errorString) : QGeoTiledMappingManagerEngine(parameters), m_parameters(parameters), m_nam(NULL) { QNetworkDiskCache *cache = NULL; Q_UNUSED(error) Q_UNUSED(errorString) setTileSize(QSize(256, 256)); setMinimumZoomLevel(0.0); setMaximumZoomLevel(17.0); QList<QGraphicsGeoMap::MapType> types; types << QGraphicsGeoMap::StreetMap; types << QGraphicsGeoMap::SatelliteMapDay; setSupportedMapTypes(types); QList<QGraphicsGeoMap::ConnectivityMode> modes; modes << QGraphicsGeoMap::OnlineMode; setSupportedConnectivityModes(modes); QList<QString> keys = m_parameters.keys(); if (keys.contains("mapping.networkaccessmanager")) { QNetworkAccessManager *nam; nam = (QNetworkAccessManager *)m_parameters .value("mapping.networkaccessmanager").value<void *>(); if (nam) m_nam = nam; } if (!m_nam) { m_nam = new QNetworkAccessManager(this); cache = new QNetworkDiskCache(this); } if (cache) { QDir dir = QDir::temp(); dir.mkdir("maptiles-google"); dir.cd("maptiles-google"); cache->setCacheDirectory(dir.path()); } if (keys.contains("mapping.proxy")) { QString proxy = m_parameters.value("mapping.proxy").toString(); if (!proxy.isEmpty()) m_nam->setProxy(parseProxy(proxy)); } if (cache && keys.contains("mapping.cache.directory")) { QString cacheDir = m_parameters.value("mapping.cache.directory").toString(); if (!cacheDir.isEmpty()) cache->setCacheDirectory(cacheDir); } if (cache && keys.contains("mapping.cache.size")) { bool ok = false; qint64 cacheSize = m_parameters.value("mapping.cache.size").toString().toLongLong(&ok); if (ok) cache->setMaximumCacheSize(cacheSize); } if (cache) m_nam->setCache(cache); }
QGeoMappingManagerEngineCm::QGeoMappingManagerEngineCm(const QMap<QString, QVariant> ¶meters, QGeoServiceProvider::Error *error, QString *errorString) : QGeoTiledMappingManagerEngine(parameters), m_parameters(parameters), m_host("b.tile.cloudmade.com"), m_token(QGeoServiceProviderFactoryCm::defaultToken) { Q_UNUSED(error) Q_UNUSED(errorString) setTileSize(QSize(256,256)); setMinimumZoomLevel(0.0); setMaximumZoomLevel(18.0); m_styleId = m_parameters.value("style", "1").toString(); //SL_MAP_TYPE QList<QGraphicsGeoMap::MapType> types; types << QGraphicsGeoMap::StreetMap; setSupportedMapTypes(types); m_nam = new QNetworkAccessManager(this); //m_cache = new QNetworkDiskCache(this); m_cacheSize = DEFAULT_TILE_CACHE_SIZE; QList<QString> keys = m_parameters.keys(); if (keys.contains("mapping.proxy")) { QString proxy = m_parameters.value("mapping.proxy").toString(); if (!proxy.isEmpty()) m_nam->setProxy(QNetworkProxy(QNetworkProxy::HttpProxy, proxy, 8080)); } if (keys.contains("mapping.host")) { QString host = m_parameters.value("mapping.host").toString(); if (!host.isEmpty()) m_host = host; } if (keys.contains("mapping.cache.directory")) { QString cacheDir = m_parameters.value("mapping.cache.directory").toString(); if (!cacheDir.isEmpty()) m_cacheDir = cacheDir; //m_cache->setCacheDirectory(cacheDir); } else { // set default cache dir // QDir dir = QDir::temp(); QDir dir = QDir(QDesktopServices::storageLocation(QDesktopServices::CacheLocation)); qDebug() << __FUNCTION__ << "Cache at" << dir; dir.mkdir(DEFAULT_TILE_CACHE_DIR); // QFileInfo info(dir.absolutePath()); // qDebug() << __FUNCTION__ << "Cache size" << info.size(); dir.cd(DEFAULT_TILE_CACHE_DIR); //m_cache->setCacheDirectory(dir.path()); m_cacheDir = dir.path(); } DBG_CM(TILES_M, INFO_L, "Setting tile cache dir to " << m_cacheDir); if (keys.contains("mapping.cache.size")) { bool ok = false; qint64 cacheSize = m_parameters.value("mapping.cache.size").toString().toLongLong(&ok); if (ok) { //m_cache->setMaximumCacheSize(cacheSize); m_cacheSize = cacheSize; DBG_CM(TILES_M, INFO_L, "Setting tile cache size = " << m_cacheSize); } } // first of all: delete all *.png files that may still be lurking in // the old cache dir as they may affect the gallery (they are named // png, but are not real png files) QDir dir = QDir::temp(); if(dir.cd("maptiles-cm")) { QStringList pngFilters; pngFilters << "*.png"; dir.setNameFilters(pngFilters); QStringList pngList = dir.entryList(); foreach(QString name, pngList) dir.remove(name); dir.cd(".."); dir.rmdir("maptiles-cm"); } // if (m_cacheSize > 0) cleanCacheToSize(m_cacheSize); }