Date:2010-11-17 10:58:22 (13 years 4 months ago)
Author:nielsk
Commit:bdecafa5bd65da43f59d6be6abec2d608274398b
Message:draw icons of the points of interest loaded from a .osm file

Files: icons/atm.png (0 diffs)
icons/bank.png (0 diffs)
icons/bus_stop.png (0 diffs)
icons/cinema.png (0 diffs)
icons/drinking_water.png (0 diffs)
icons/fuel.png (0 diffs)
icons/hospital.png (0 diffs)
icons/hostel.png (0 diffs)
icons/hotel.png (0 diffs)
icons/museum.png (0 diffs)
icons/parking.png (0 diffs)
icons/pharmacy.png (0 diffs)
icons/recycling.png (0 diffs)
icons/speed_camera.png (0 diffs)
icons/telephone.png (0 diffs)
icons/toilets.png (0 diffs)
icons/viewpoint.png (0 diffs)
poilayer.cpp (4 diffs)
poilayer.h (1 diff)

Change Details

icons/atm.png
icons/bank.png
icons/bus_stop.png
icons/cinema.png
icons/drinking_water.png
icons/fuel.png
icons/hospital.png
icons/hostel.png
icons/hotel.png
icons/museum.png
icons/parking.png
icons/pharmacy.png
icons/recycling.png
icons/speed_camera.png
icons/telephone.png
icons/toilets.png
icons/viewpoint.png
poilayer.cpp
2222#include "mapwidget.h"
2323#include "projection.h"
2424
25#include <QtCore/QDir>
2526#include <QtCore/QFile>
27#include <QtCore/QSettings>
2628#include <QtXml/QXmlStreamReader>
2729
2830PoiLayer::PoiLayer(MapWidget *map) :
...... 
3032    m_points(),
3133    m_pointsOnScreen(),
3234    m_icons(),
33    m_pointsOffset(0, 0)
35    m_pointsOffset(0, 0),
36    m_iconPath(),
37    m_iconCache()
3438{
39    QSettings set(QDir::homePath()+"/Maps/nanomap.conf", QSettings::NativeFormat);
40
41    set.beginGroup("poi");
42    m_iconPath = set.value("iconpath", "/usr/share/NanoMap/icons").toString();
43    set.endGroup();
3544}
3645
3746void PoiLayer::load(const QString &filename)
...... 
8392                    foreach (const QString &c, categories) {
8493                        QString t = tags.value(c, "");
8594                        if (!t.isEmpty()) {
86                            m_points << pos;
87                            m_icons << t;
88                            break;
95                            QString icon = m_iconPath+"/"+t+".png";
96                            if (QFile::exists(icon)) {
97                                if (!m_iconCache.contains(t)) {
98                                    m_iconCache.insert(t, new QPixmap(icon));
99                                }
100                                m_points << pos;
101                                m_icons << t;
102                                break;
103                            }
89104                        }
90105                    }
91106                    tags.clear();
...... 
120135    QPoint p;
121136    for (int i = 0; i < m_pointsOnScreen.count(); ++i) {
122137        p = m_pointsOnScreen.at(i);
123        painter->drawEllipse(p + m_pointsOffset, 5, 5);
138        painter->drawPixmap(p + m_pointsOffset, *m_iconCache.value(m_icons.at(i)));
124139    }
125140}
126141
poilayer.h
4242    QList<QPoint> m_pointsOnScreen;
4343    QStringList m_icons;
4444    QPoint m_pointsOffset;
45    QString m_iconPath;
46    QHash<QString, QPixmap*> m_iconCache;
4547
4648};
4749

Archive Download the corresponding diff file

Branches:
master



interactive