Human-friendly links
[GPXSee.git] / src / coordinates.h
blob83a26322874f0921008ea252f8cdb847aa4d8b6a
1 #ifndef COORDINATES_H
2 #define COORDINATES_H
4 #include <cmath>
5 #include <QPointF>
6 #include <QDebug>
8 class Coordinates
10 public:
11 Coordinates() {_lon = NAN; _lat = NAN;}
12 Coordinates(const Coordinates &c) {_lon = c._lon; _lat = c._lat;}
13 Coordinates(qreal lon, qreal lat) {_lon = lon; _lat = lat;}
15 qreal &rlon() {return _lon;}
16 qreal &rlat() {return _lat;}
17 void setLon(qreal lon) {_lon = lon;}
18 void setLat(qreal lat) {_lat = lat;}
19 qreal lon() const {return _lon;}
20 qreal lat() const {return _lat;}
22 bool isNull() const
23 {return (std::isnan(_lon) || std::isnan(_lat)) ? true : false;}
24 bool isValid() const
25 {return (_lon >= -180.0 && _lon <= 180.0 && _lat >= -90.0
26 && _lat <= 90.0) ? true : false;}
28 qreal distanceTo(const Coordinates &c) const;
29 QPair<Coordinates, Coordinates> boundingRect(qreal distance) const;
31 QPointF toMercator() const;
32 static Coordinates fromMercator(const QPointF &m);
34 private:
35 qreal _lat, _lon;
38 bool operator==(const Coordinates &c1, const Coordinates &c2);
39 QDebug operator<<(QDebug dbg, const Coordinates &trackpoint);
41 #endif // COORDINATES_H