Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qgeofiletilecacheohosmapkit.cpp
Go to the documentation of this file.
1
// Copyright (C) 2025 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4
#
include
<
QtCore
/
qdir
.
h
>
5
#
include
<
QtCore
/
qregularexpression
.
h
>
6
#
include
<
QtLocation
/
private
/
qgeotilespec_p
.
h
>
7
#
include
<
algorithm
>
8
#
include
<
qgeofiletilecacheohosmapkit
.
h
>
9
#
include
<
unordered_map
>
10
11
QT_BEGIN_NAMESPACE
12
13
namespace
{
14
15
constexpr
int
minScaleFactor
= 1;
16
constexpr
int
maxScaleFactor
= 2;
17
18
constexpr
int
fixedMapId
= 0;
19
20
class
QGeoFileTileCacheOhosMapKit
:
public
QGeoFileTileCache
21
{
22
public
:
23
QGeoFileTileCacheOhosMapKit
(
24
int
scaleFactor,
const
QString &directory, QObject *parent);
25
26
protected
:
27
QString
tileSpecToFilename
(
28
const
QGeoTileSpec &spec,
const
QString &format,
const
QString &directory)
const
override
;
29
QGeoTileSpec
filenameToTileSpec
(
const
QString &filename)
const
override
;
30
31
private
:
32
int
m_scaleFactor;
33
};
34
35
QGeoFileTileCacheOhosMapKit
::
QGeoFileTileCacheOhosMapKit
(
36
int
scaleFactor,
const
QString &directory, QObject *parent)
37
:
QGeoFileTileCache
(
directory
,
parent
)
38
, m_scaleFactor(qBound(
minScaleFactor
, scaleFactor,
maxScaleFactor
))
39
{
40
}
41
42
QString
QGeoFileTileCacheOhosMapKit
::
tileSpecToFilename
(
43
const
QGeoTileSpec &spec,
const
QString &format,
const
QString &outputDir)
const
44
{
45
return
QDir(outputDir).filePath(
46
QString(
"%1-%2-%3-%4-%5-@%6x.%7"
)
47
.arg(spec.plugin())
48
.arg(
fixedMapId
)
49
.arg(spec.zoom())
50
.arg(spec.x())
51
.arg(spec.y())
52
.arg(m_scaleFactor)
53
.arg(format));
54
}
55
56
QGeoTileSpec
QGeoFileTileCacheOhosMapKit
::
filenameToTileSpec
(
const
QString &filename)
const
57
{
58
QRegularExpression tileCacheFilenameMatchingRegexp(
59
QStringLiteral(
60
R"(^(?<pluginName>.*?)-(?<mapId>\d+)-(?<zoom>\d+)-(?<x>\d+)-(?<y>\d+)-@(?<scale>\d+)x)"));
61
62
std::unordered_map<
const
char
*,
int
> matchIntegerValues = {
63
{
"mapId"
, 0},
64
{
"zoom"
, 0},
65
{
"x"
, 0},
66
{
"y"
, 0},
67
{
"scale"
, 0},
68
};
69
70
QRegularExpressionMatch match = tileCacheFilenameMatchingRegexp.match(filename);
71
72
bool
matchValuesValid =
false
;
73
if
(match.hasMatch()) {
74
matchValuesValid =
true
;
75
for
(
auto
&kv : matchIntegerValues) {
76
bool
ok;
77
kv.second = match.captured(kv.first).toInt(&ok);
78
if
(!ok) {
79
matchValuesValid =
false
;
80
break
;
81
}
82
}
83
}
84
85
constexpr
int
noVersionSpecified = -1;
86
return
matchValuesValid && matchIntegerValues[
"scale"
] == m_scaleFactor
87
? QGeoTileSpec(
88
match.captured(
"pluginName"
),
89
matchIntegerValues[
"mapId"
],
90
matchIntegerValues[
"zoom"
],
91
matchIntegerValues[
"x"
],
92
matchIntegerValues[
"y"
],
93
noVersionSpecified)
94
: QGeoTileSpec();
95
}
96
97
}
98
99
QGeoFileTileCache
*
makeGeoFileTileCacheOhosMapKit
(
int
scaleFactor,
const
QString &directory, QObject *parent)
100
{
101
return
new
QGeoFileTileCacheOhosMapKit
(scaleFactor, directory, parent);
102
}
103
104
QT_END_NAMESPACE
QT_BEGIN_NAMESPACE::QGeoFileTileCacheOhosMapKit
Definition
qgeofiletilecacheohosmapkit.cpp:21
QT_BEGIN_NAMESPACE::QGeoFileTileCacheOhosMapKit::filenameToTileSpec
QGeoTileSpec filenameToTileSpec(const QString &filename) const override
Definition
qgeofiletilecacheohosmapkit.cpp:56
QT_BEGIN_NAMESPACE::QGeoFileTileCacheOhosMapKit::QGeoFileTileCacheOhosMapKit
QGeoFileTileCacheOhosMapKit(int scaleFactor, const QString &directory, QObject *parent)
Definition
qgeofiletilecacheohosmapkit.cpp:35
QT_BEGIN_NAMESPACE::QGeoFileTileCacheOhosMapKit::tileSpecToFilename
QString tileSpecToFilename(const QGeoTileSpec &spec, const QString &format, const QString &directory) const override
Definition
qgeofiletilecacheohosmapkit.cpp:42
QT_BEGIN_NAMESPACE::fixedMapId
constexpr int fixedMapId
Definition
qgeofiletilecacheohosmapkit.cpp:18
QT_BEGIN_NAMESPACE::maxScaleFactor
constexpr int maxScaleFactor
Definition
qgeofiletilecacheohosmapkit.cpp:16
QT_BEGIN_NAMESPACE::minScaleFactor
constexpr int minScaleFactor
Definition
qgeofiletilecacheohosmapkit.cpp:15
makeGeoFileTileCacheOhosMapKit
QGeoFileTileCache * makeGeoFileTileCacheOhosMapKit(int scaleFactor, const QString &directory, QObject *parent)
Definition
qgeofiletilecacheohosmapkit.cpp:99
qtlocation
src
plugins
geoservices
ohosmapkit
qgeofiletilecacheohosmapkit.cpp
Generated on
for Qt by
1.18.0