1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-10-06 06:43:22 +02:00

Fixed path/distances size difference issue

This commit is contained in:
Martin Tůma 2016-11-15 18:08:44 +01:00
parent eb5692a0ab
commit e9e7660beb
3 changed files with 17 additions and 6 deletions

View File

@ -77,6 +77,8 @@ QPointF PathItem::position(qreal x) const
int high = _distance.count() - 1;
int mid = 0;
Q_ASSERT(_distance.count() == _path.elementCount());
Q_ASSERT(high > low);
Q_ASSERT(x >= _distance.at(low) && x <= _distance.at(high));

View File

@ -25,25 +25,32 @@ RouteItem::RouteItem(const Route &route, QGraphicsItem *parent)
: PathItem(parent)
{
const RouteData &r = route.routeData();
Q_ASSERT(r.count() >= 2);
const QVector<qreal> &d = route.distanceData();
QPointF p;
Q_ASSERT(r.count() >= 2);
Q_ASSERT(r.size() == d.size());
_name = r.name();
_desc = r.description();
_distance = route.distanceData();
new WaypointItem(r.at(0), this);
p = r.at(0).coordinates().toMercator();
new WaypointItem(r.first(), this);
p = r.first().coordinates().toMercator();
_path.moveTo(QPointF(p.x(), -p.y()));
_distance.append(d.first());
for (int i = 1; i < r.size(); i++) {
if (r.at(i).coordinates() == r.at(i-1).coordinates())
continue;
p = r.at(i).coordinates().toMercator();
_path.lineTo(QPointF(p.x(), -p.y()));
_distance.append(d.at(i));
new WaypointItem(r.at(i), this);
}
updateShape();
_marker->setPos(_path.pointAtPercent(0));
_marker->setPos(_path.elementAt(0));
_pen.setStyle(Qt::DotLine);

View File

@ -37,6 +37,8 @@ TrackItem::TrackItem(const Track &track, QGraphicsItem *parent)
_path.moveTo(QPointF(p.x(), -p.y()));
_distance.append(path.first().distance());
for (int i = 1; i < path.size(); i++) {
if (path.at(i).coordinates() == path.at(i-1).coordinates())
continue;
p = path.at(i).coordinates().toMercator();
_path.lineTo(QPointF(p.x(), -p.y()));
_distance.append(path.at(i).distance());
@ -49,7 +51,7 @@ TrackItem::TrackItem(const Track &track, QGraphicsItem *parent)
_date = track.date();
_time = track.time();
_marker->setPos(_path.pointAtPercent(0));
_marker->setPos(_path.elementAt(0));
setToolTip(toolTip());
}