1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-11-24 11:45:53 +01:00

Added missing coordinates transformation

This commit is contained in:
Martin Tůma 2017-03-20 22:52:39 +01:00
parent 92545acba0
commit d8477571cc

View File

@ -28,9 +28,12 @@ int OziMap::parseMapFile(QIODevice &device, QList<ReferencePoint> &points)
return ln;
} else if (ln == 3)
_imgPath = line.trimmed();
else if (ln >= 10 && ln < 40) {
else {
QList<QByteArray> list = line.split(',');
if (list.count() == 17 && !list.at(2).trimmed().isEmpty()) {
QString key(list.at(0).trimmed());
if (key.startsWith("Point") && list.count() == 17
&& !list.at(2).trimmed().isEmpty()) {
int x = list.at(2).trimmed().toInt(&res);
if (!res)
return ln;
@ -56,10 +59,7 @@ int OziMap::parseMapFile(QIODevice &device, QList<ReferencePoint> &points)
lond = -lond;
points.append(QPair<QPoint, Coordinates>(QPoint(x, y),
Coordinates(lond + lonm/60.0, latd + latm/60.0)));
}
} else {
QList<QByteArray> list = line.split(',');
if (list.at(0).trimmed() == "IWH") {
} else if (key == "IWH") {
int w = list.at(2).trimmed().toInt(&res);
if (!res)
return ln;
@ -87,9 +87,10 @@ bool OziMap::computeTransformation(const QList<ReferencePoint> &points)
for (size_t k = 0; k < c.h(); k++) {
for (int i = 0; i < points.size(); i++) {
double f[3], t[2];
QPointF p = points.at(i).second.toMercator();
f[0] = points.at(i).second.lon();
f[1] = points.at(i).second.lat();
f[0] = p.x();
f[1] = p.y();
f[2] = 1.0;
t[0] = points.at(i).first.x();
t[1] = points.at(i).first.y();
@ -102,9 +103,10 @@ bool OziMap::computeTransformation(const QList<ReferencePoint> &points)
Q.zeroize();
for (int qi = 0; qi < points.size(); qi++) {
double v[3];
QPointF p = points.at(qi).second.toMercator();
v[0] = points.at(qi).second.lon();
v[1] = points.at(qi).second.lat();
v[0] = p.x();
v[1] = p.y();
v[2] = 1.0;
for (size_t i = 0; i < Q.h(); i++)
for (size_t j = 0; j < Q.w(); j++)
@ -174,8 +176,8 @@ bool OziMap::getTileInfo(QDir &set)
QImage tile(_tileName.arg("0", "0"));
if (tile.isNull()) {
qWarning("%s: %s: invalid image", qPrintable(_name),
qPrintable(_tileName.arg("0", "0")));
qWarning("%s: error retrieving tile size: %s: invalid image",
qPrintable(_name), qPrintable(_tileName.arg("0", "0")));
return false;
}
_tileSize = tile.size();
@ -324,10 +326,10 @@ void OziMap::draw(QPainter *painter, const QRectF &rect)
QPointF OziMap::ll2xy(const Coordinates &c) const
{
return _transform.map(QPointF(c.lon(), c.lat()));
return _transform.map(c.toMercator());
}
Coordinates OziMap::xy2ll(const QPointF &p) const
{
return _transform.inverted().map(p);
return Coordinates::fromMercator(_transform.inverted().map(p));
}