#pragma once #include #include class TiQGeoFileTileCache : public QGeoFileTileCache { public: TiQGeoFileTileCache(const QString& directory = QString(), QObject* parent = nullptr); ~TiQGeoFileTileCache(); QSharedPointer get(const QGeoTileSpec& spec) override; void insert(const QGeoTileSpec& spec, const QByteArray& bytes, const QString& format, QAbstractGeoTileCache::CacheAreas areas = QAbstractGeoTileCache::AllCaches) override; private: void addToSqlite(const QGeoTileSpec& spec, const QString& format, const QByteArray& bytes); QSharedPointer getFromSqlite(const QGeoTileSpec& spec); //由于qtlocation提供的qhash计算出现错误的机率较大,因此我们自已计算hash static quint64 getTileHash(int type, int x, int y, int z); bool openSqlite(const QString& connectId); private: QSqlDatabase* m_db = nullptr; bool m_valid = false; QString m_dbName = "TiMapCache.db"; };