mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-20 10:54:14 +01:00
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@745 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
parent
39aaf0868a
commit
54a48953a4
@ -52,167 +52,167 @@ namespace qmapcontrol
|
||||
*/
|
||||
class MapControl : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
//! Declares what actions the mouse move has on the map
|
||||
enum MouseMode
|
||||
{
|
||||
Panning, /*!< The map is moved */
|
||||
Dragging, /*!< A rectangular can be drawn */
|
||||
None, /*!< Mouse move events have no efect to the map */
|
||||
};
|
||||
//! Declares what actions the mouse move has on the map
|
||||
enum MouseMode
|
||||
{
|
||||
Panning, /*!< The map is moved */
|
||||
Dragging, /*!< A rectangular can be drawn */
|
||||
None, /*!< Mouse move events have no efect to the map */
|
||||
};
|
||||
|
||||
//! The constructor of MapControl
|
||||
/*!
|
||||
* The MapControl is the widget which displays the maps.
|
||||
* The size describes the area, which gets filled with map data
|
||||
* When you give no MouseMode, the mouse is moving the map.
|
||||
* You can change the MouseMode on runtime, to e.g. Dragging, which lets the user drag a rectangular box.
|
||||
* After the dragging a signal with the size of the box is emitted.
|
||||
* The mousemode ´None´ can be used, to completely define the control of the map yourself.
|
||||
* @param size the size which the widget should fill with map data
|
||||
* @param mousemode the way mouseevents are handled
|
||||
*/
|
||||
MapControl ( QSize size, MouseMode mousemode = Panning );
|
||||
//! The constructor of MapControl
|
||||
/*!
|
||||
* The MapControl is the widget which displays the maps.
|
||||
* The size describes the area, which gets filled with map data
|
||||
* When you give no MouseMode, the mouse is moving the map.
|
||||
* You can change the MouseMode on runtime, to e.g. Dragging, which lets the user drag a rectangular box.
|
||||
* After the dragging a signal with the size of the box is emitted.
|
||||
* The mousemode ´None´ can be used, to completely define the control of the map yourself.
|
||||
* @param size the size which the widget should fill with map data
|
||||
* @param mousemode the way mouseevents are handled
|
||||
*/
|
||||
MapControl ( QSize size, MouseMode mousemode = Panning );
|
||||
|
||||
~MapControl();
|
||||
~MapControl();
|
||||
|
||||
//! adds a layer
|
||||
/*!
|
||||
* If multiple layers are added, they are painted in the added order.
|
||||
* @param layer the layer which should be added
|
||||
*/
|
||||
void addLayer ( Layer* layer );
|
||||
//! adds a layer
|
||||
/*!
|
||||
* If multiple layers are added, they are painted in the added order.
|
||||
* @param layer the layer which should be added
|
||||
*/
|
||||
void addLayer ( Layer* layer );
|
||||
|
||||
//! returns the layer with the given name
|
||||
/*!
|
||||
* @param layername name of the wanted layer
|
||||
* @return the layer with the given name
|
||||
*/
|
||||
Layer* layer ( const QString& layername ) const;
|
||||
//! returns the layer with the given name
|
||||
/*!
|
||||
* @param layername name of the wanted layer
|
||||
* @return the layer with the given name
|
||||
*/
|
||||
Layer* layer ( const QString& layername ) const;
|
||||
|
||||
//! returns the names of all layers
|
||||
/*!
|
||||
* @return returns a QList with the names of all layers
|
||||
*/
|
||||
QList<QString> layers() const;
|
||||
//! returns the names of all layers
|
||||
/*!
|
||||
* @return returns a QList with the names of all layers
|
||||
*/
|
||||
QList<QString> layers() const;
|
||||
|
||||
//! returns the number of existing layers
|
||||
/*!
|
||||
* @return returns the number of existing layers
|
||||
*/
|
||||
int numberOfLayers() const;
|
||||
//! returns the number of existing layers
|
||||
/*!
|
||||
* @return returns the number of existing layers
|
||||
*/
|
||||
int numberOfLayers() const;
|
||||
|
||||
//! returns the coordinate of the center of the map
|
||||
/*!
|
||||
* @return returns the coordinate of the middle of the screen
|
||||
*/
|
||||
QPointF currentCoordinate() const;
|
||||
//! returns the coordinate of the center of the map
|
||||
/*!
|
||||
* @return returns the coordinate of the middle of the screen
|
||||
*/
|
||||
QPointF currentCoordinate() const;
|
||||
|
||||
//! returns the current zoom level
|
||||
/*!
|
||||
* @return returns the current zoom level
|
||||
*/
|
||||
int currentZoom() const;
|
||||
//! returns the current zoom level
|
||||
/*!
|
||||
* @return returns the current zoom level
|
||||
*/
|
||||
int currentZoom() const;
|
||||
|
||||
//! sets the middle of the map to the given coordinate
|
||||
/*!
|
||||
* @param coordinate the coordinate which the view´s middle should be set to
|
||||
*/
|
||||
void setView ( const QPointF& coordinate ) const;
|
||||
//! sets the middle of the map to the given coordinate
|
||||
/*!
|
||||
* @param coordinate the coordinate which the view´s middle should be set to
|
||||
*/
|
||||
void setView ( const QPointF& coordinate ) const;
|
||||
|
||||
//! sets the view, so all coordinates are visible
|
||||
/*!
|
||||
* @param coordinates the Coorinates which should be visible
|
||||
*/
|
||||
void setView ( const QList<QPointF> coordinates ) const;
|
||||
//! sets the view, so all coordinates are visible
|
||||
/*!
|
||||
* @param coordinates the Coorinates which should be visible
|
||||
*/
|
||||
void setView ( const QList<QPointF> coordinates ) const;
|
||||
|
||||
//! sets the view and zooms in, so all coordinates are visible
|
||||
/*!
|
||||
* The code of setting the view to multiple coordinates is "brute force" and pretty slow.
|
||||
* Have to be reworked.
|
||||
* @param coordinates the Coorinates which should be visible
|
||||
*/
|
||||
void setViewAndZoomIn ( const QList<QPointF> coordinates ) const;
|
||||
//! sets the view and zooms in, so all coordinates are visible
|
||||
/*!
|
||||
* The code of setting the view to multiple coordinates is "brute force" and pretty slow.
|
||||
* Have to be reworked.
|
||||
* @param coordinates the Coorinates which should be visible
|
||||
*/
|
||||
void setViewAndZoomIn ( const QList<QPointF> coordinates ) const;
|
||||
|
||||
//! sets the view to the given Point
|
||||
/*!
|
||||
*
|
||||
* @param point the geometric point the view should be set to
|
||||
*/
|
||||
void setView ( const Point* point ) const;
|
||||
//! sets the view to the given Point
|
||||
/*!
|
||||
*
|
||||
* @param point the geometric point the view should be set to
|
||||
*/
|
||||
void setView ( const Point* point ) const;
|
||||
|
||||
//! Keeps the center of the map on the Geometry, even when it moves
|
||||
/*!
|
||||
* To stop the following the method stopFollowing() have to be called
|
||||
* @param geometry the Geometry which should stay centered.
|
||||
*/
|
||||
void followGeometry ( const Geometry* geometry ) const;
|
||||
//! Keeps the center of the map on the Geometry, even when it moves
|
||||
/*!
|
||||
* To stop the following the method stopFollowing() have to be called
|
||||
* @param geometry the Geometry which should stay centered.
|
||||
*/
|
||||
void followGeometry ( const Geometry* geometry ) const;
|
||||
|
||||
//TODO:
|
||||
// void followGeometry(const QList<Geometry*>) const;
|
||||
//TODO:
|
||||
// void followGeometry(const QList<Geometry*>) const;
|
||||
|
||||
//! Stops the following of a Geometry
|
||||
/*!
|
||||
* if the view is set to follow a Geometry this method stops the trace.
|
||||
* See followGeometry().
|
||||
* @param geometry the Geometry which should not followed anymore
|
||||
*/
|
||||
void stopFollowing ( Geometry* geometry );
|
||||
//! Stops the following of a Geometry
|
||||
/*!
|
||||
* if the view is set to follow a Geometry this method stops the trace.
|
||||
* See followGeometry().
|
||||
* @param geometry the Geometry which should not followed anymore
|
||||
*/
|
||||
void stopFollowing ( Geometry* geometry );
|
||||
|
||||
//! Smoothly moves the center of the view to the given Coordinate
|
||||
/*!
|
||||
* @param coordinate the Coordinate which the center of the view should moved to
|
||||
*/
|
||||
void moveTo ( QPointF coordinate );
|
||||
//! Smoothly moves the center of the view to the given Coordinate
|
||||
/*!
|
||||
* @param coordinate the Coordinate which the center of the view should moved to
|
||||
*/
|
||||
void moveTo ( QPointF coordinate );
|
||||
|
||||
//! sets the Mouse Mode of the MapControl
|
||||
/*!
|
||||
* There are three MouseModes declard by an enum.
|
||||
* The MouesMode Dragging draws an rectangular in the map while the MouseButton is pressed.
|
||||
* When the Button is released a boxDragged() signal is emitted.
|
||||
*
|
||||
* The second MouseMode (the default) is Panning, which allows to drag the map around.
|
||||
* @param mousemode the MouseMode
|
||||
*/
|
||||
void setMouseMode ( MouseMode mousemode );
|
||||
//! sets the Mouse Mode of the MapControl
|
||||
/*!
|
||||
* There are three MouseModes declard by an enum.
|
||||
* The MouesMode Dragging draws an rectangular in the map while the MouseButton is pressed.
|
||||
* When the Button is released a boxDragged() signal is emitted.
|
||||
*
|
||||
* The second MouseMode (the default) is Panning, which allows to drag the map around.
|
||||
* @param mousemode the MouseMode
|
||||
*/
|
||||
void setMouseMode ( MouseMode mousemode );
|
||||
|
||||
//! returns the current MouseMode
|
||||
/*!
|
||||
* For a explanation for the MouseModes see setMouseMode()
|
||||
* @return the current MouseMode
|
||||
*/
|
||||
MapControl::MouseMode mouseMode();
|
||||
//! returns the current MouseMode
|
||||
/*!
|
||||
* For a explanation for the MouseModes see setMouseMode()
|
||||
* @return the current MouseMode
|
||||
*/
|
||||
MapControl::MouseMode mouseMode();
|
||||
|
||||
//int rotation;
|
||||
//int rotation;
|
||||
|
||||
//! Enable persistent caching of map tiles
|
||||
/*!
|
||||
* Call this method to allow the QMapControl widget to save map tiles
|
||||
* persistent (also over application restarts).
|
||||
* Tiles are stored in the subdirectory "QMapControl.cache" within the
|
||||
* user's home directory. This can be changed by giving a path.
|
||||
* @param path the path to the cache directory
|
||||
*/
|
||||
void enablePersistentCache ( const QDir& path=QDir::homePath() + "/QMapControl.cache" );
|
||||
//! Enable persistent caching of map tiles
|
||||
/*!
|
||||
* Call this method to allow the QMapControl widget to save map tiles
|
||||
* persistent (also over application restarts).
|
||||
* Tiles are stored in the subdirectory "QMapControl.cache" within the
|
||||
* user's home directory. This can be changed by giving a path.
|
||||
* @param path the path to the cache directory
|
||||
*/
|
||||
void enablePersistentCache ( const QDir& path=QDir::homePath() + "/QMapControl.cache" );
|
||||
|
||||
|
||||
//! Sets the proxy for HTTP connections
|
||||
/*!
|
||||
* This method sets the proxy for HTTP connections.
|
||||
* This is not provided by the current Qtopia version!
|
||||
* @param host the proxy´s hostname or ip
|
||||
* @param port the proxy´s port
|
||||
*/
|
||||
void setProxy ( QString host, int port );
|
||||
//! Sets the proxy for HTTP connections
|
||||
/*!
|
||||
* This method sets the proxy for HTTP connections.
|
||||
* This is not provided by the current Qtopia version!
|
||||
* @param host the proxy´s hostname or ip
|
||||
* @param port the proxy´s port
|
||||
*/
|
||||
void setProxy ( QString host, int port );
|
||||
|
||||
//! Displays the scale within the widget
|
||||
/*!
|
||||
*
|
||||
* @param show true if the scale should be displayed
|
||||
*/
|
||||
void showScale ( bool show );
|
||||
//! Displays the scale within the widget
|
||||
/*!
|
||||
*
|
||||
* @param show true if the scale should be displayed
|
||||
*/
|
||||
void showScale ( bool show );
|
||||
|
||||
// added by cathy
|
||||
// show/hide the center latitude & longitude coord
|
||||
@ -224,122 +224,122 @@ namespace qmapcontrol
|
||||
void showLatLon(bool show);
|
||||
|
||||
private:
|
||||
LayerManager* layermanager;
|
||||
QPoint screen_middle; // middle of the widget (half size)
|
||||
LayerManager* layermanager;
|
||||
QPoint screen_middle; // middle of the widget (half size)
|
||||
|
||||
QPoint pre_click_px; // used for scrolling (MouseMode Panning)
|
||||
QPoint current_mouse_pos; // used for scrolling and dragging (MouseMode Panning/Dragging)
|
||||
QPoint pre_click_px; // used for scrolling (MouseMode Panning)
|
||||
QPoint current_mouse_pos; // used for scrolling and dragging (MouseMode Panning/Dragging)
|
||||
|
||||
QSize size; // size of the widget
|
||||
QSize size; // size of the widget
|
||||
|
||||
bool mousepressed;
|
||||
MouseMode mymousemode;
|
||||
bool mousepressed;
|
||||
MouseMode mymousemode;
|
||||
|
||||
bool scaleVisible;
|
||||
bool scaleVisible;
|
||||
bool latLonVisible;
|
||||
|
||||
bool m_loadingFlag;
|
||||
bool m_loadingFlag;
|
||||
|
||||
QMutex moveMutex; // used for method moveTo()
|
||||
QPointF target; // used for method moveTo()
|
||||
int steps; // used for method moveTo()
|
||||
QMutex moveMutex; // used for method moveTo()
|
||||
QPointF target; // used for method moveTo()
|
||||
int steps; // used for method moveTo()
|
||||
|
||||
QPointF clickToWorldCoordinate ( QPoint click );
|
||||
MapControl& operator= ( const MapControl& rhs );
|
||||
MapControl ( const MapControl& old );
|
||||
QPointF clickToWorldCoordinate ( QPoint click );
|
||||
MapControl& operator= ( const MapControl& rhs );
|
||||
MapControl ( const MapControl& old );
|
||||
|
||||
protected:
|
||||
void paintEvent ( QPaintEvent* evnt );
|
||||
void mousePressEvent ( QMouseEvent* evnt );
|
||||
void mouseReleaseEvent ( QMouseEvent* evnt );
|
||||
void mouseMoveEvent ( QMouseEvent* evnt );
|
||||
void paintEvent ( QPaintEvent* evnt );
|
||||
void mousePressEvent ( QMouseEvent* evnt );
|
||||
void mouseReleaseEvent ( QMouseEvent* evnt );
|
||||
void mouseMoveEvent ( QMouseEvent* evnt );
|
||||
void wheelEvent(QWheelEvent *event); // added by cathy
|
||||
|
||||
signals:
|
||||
// void mouseEvent(const QMouseEvent* evnt);
|
||||
// void mouseEvent(const QMouseEvent* evnt);
|
||||
|
||||
//! Emitted AFTER a MouseEvent occured
|
||||
/*!
|
||||
* This signals allows to receive click events within the MapWidget together with the world coordinate.
|
||||
* It is emitted on MousePressEvents and MouseReleaseEvents.
|
||||
* The kind of the event can be obtained by checking the events type.
|
||||
* @param evnt the QMouseEvent that occured
|
||||
* @param coordinate the corresponding world coordinate
|
||||
*/
|
||||
void mouseEventCoordinate ( const QMouseEvent* evnt, const QPointF coordinate );
|
||||
//! Emitted AFTER a MouseEvent occured
|
||||
/*!
|
||||
* This signals allows to receive click events within the MapWidget together with the world coordinate.
|
||||
* It is emitted on MousePressEvents and MouseReleaseEvents.
|
||||
* The kind of the event can be obtained by checking the events type.
|
||||
* @param evnt the QMouseEvent that occured
|
||||
* @param coordinate the corresponding world coordinate
|
||||
*/
|
||||
void mouseEventCoordinate ( const QMouseEvent* evnt, const QPointF coordinate );
|
||||
|
||||
//! Emitted, after a Rectangular is dragged.
|
||||
/*!
|
||||
* It is possible to select a rectangular area in the map, if the MouseMode is set to Dragging.
|
||||
* The coordinates are in world coordinates
|
||||
* @param QRectF the dragged Rect
|
||||
*/
|
||||
void boxDragged ( const QRectF );
|
||||
//! Emitted, after a Rectangular is dragged.
|
||||
/*!
|
||||
* It is possible to select a rectangular area in the map, if the MouseMode is set to Dragging.
|
||||
* The coordinates are in world coordinates
|
||||
* @param QRectF the dragged Rect
|
||||
*/
|
||||
void boxDragged ( const QRectF );
|
||||
|
||||
//! This signal is emitted, when a Geometry is clicked
|
||||
/*!
|
||||
* @param geometry The clicked Geometry object
|
||||
* @param coord_px The coordinate in pixel coordinates
|
||||
*/
|
||||
void geometryClicked ( Geometry* geometry, QPoint coord_px );
|
||||
//! This signal is emitted, when a Geometry is clicked
|
||||
/*!
|
||||
* @param geometry The clicked Geometry object
|
||||
* @param coord_px The coordinate in pixel coordinates
|
||||
*/
|
||||
void geometryClicked ( Geometry* geometry, QPoint coord_px );
|
||||
|
||||
//! This signal is emitted, after the view have changed
|
||||
/*!
|
||||
* @param coordinate The current coordinate
|
||||
* @param zoom The current zoom
|
||||
*/
|
||||
void viewChanged ( const QPointF &coordinate, int zoom );
|
||||
//! This signal is emitted, after the view have changed
|
||||
/*!
|
||||
* @param coordinate The current coordinate
|
||||
* @param zoom The current zoom
|
||||
*/
|
||||
void viewChanged ( const QPointF &coordinate, int zoom );
|
||||
|
||||
public slots:
|
||||
//! zooms in one step
|
||||
void zoomIn();
|
||||
//! zooms in one step
|
||||
void zoomIn();
|
||||
|
||||
//! zooms out one step
|
||||
void zoomOut();
|
||||
//! zooms out one step
|
||||
void zoomOut();
|
||||
|
||||
//! sets the given zoomlevel
|
||||
/*!
|
||||
* @param zoomlevel the zoomlevel
|
||||
*/
|
||||
void setZoom ( int zoomlevel );
|
||||
//! sets the given zoomlevel
|
||||
/*!
|
||||
* @param zoomlevel the zoomlevel
|
||||
*/
|
||||
void setZoom ( int zoomlevel );
|
||||
|
||||
//! scrolls the view to the left
|
||||
void scrollLeft ( int pixel=10 );
|
||||
//! scrolls the view to the left
|
||||
void scrollLeft ( int pixel=10 );
|
||||
|
||||
//! scrolls the view to the right
|
||||
void scrollRight ( int pixel=10 );
|
||||
//! scrolls the view to the right
|
||||
void scrollRight ( int pixel=10 );
|
||||
|
||||
//! scrolls the view up
|
||||
void scrollUp ( int pixel=10 );
|
||||
//! scrolls the view up
|
||||
void scrollUp ( int pixel=10 );
|
||||
|
||||
//! scrolls the view down
|
||||
void scrollDown ( int pixel=10 );
|
||||
//! scrolls the view down
|
||||
void scrollDown ( int pixel=10 );
|
||||
|
||||
//! scrolls the view by the given point
|
||||
void scroll ( const QPoint scroll );
|
||||
//! scrolls the view by the given point
|
||||
void scroll ( const QPoint scroll );
|
||||
|
||||
//! updates the map for the given rect
|
||||
/*!
|
||||
* @param rect the area which should be repainted
|
||||
*/
|
||||
void updateRequest ( QRect rect );
|
||||
//! updates the map for the given rect
|
||||
/*!
|
||||
* @param rect the area which should be repainted
|
||||
*/
|
||||
void updateRequest ( QRect rect );
|
||||
|
||||
//! updates the hole map by creating a new offscreen image
|
||||
/*!
|
||||
*
|
||||
*/
|
||||
void updateRequestNew();
|
||||
//! updates the hole map by creating a new offscreen image
|
||||
/*!
|
||||
*
|
||||
*/
|
||||
void updateRequestNew();
|
||||
|
||||
//! Resizes the map to the given size
|
||||
/*!
|
||||
* @param newSize The new size
|
||||
*/
|
||||
void resize(const QSize newSize);
|
||||
//! Resizes the map to the given size
|
||||
/*!
|
||||
* @param newSize The new size
|
||||
*/
|
||||
void resize(const QSize newSize);
|
||||
|
||||
private slots:
|
||||
void tick();
|
||||
void loadingFinished();
|
||||
void positionChanged ( Geometry* geom );
|
||||
void tick();
|
||||
void loadingFinished();
|
||||
void positionChanged ( Geometry* geom );
|
||||
};
|
||||
}
|
||||
#endif
|
||||
|
@ -27,8 +27,7 @@
|
||||
namespace qmapcontrol
|
||||
{
|
||||
OpenAerialMapAdapter::OpenAerialMapAdapter()
|
||||
// : TileMapAdapter("tile.openaerialmap.org", "/tiles/1.0.0/openaerialmap-900913/%1/%2/%3.png", 256, 0, 17)
|
||||
: TileMapAdapter("tile.openaerialmap.org", "/tiles/1.0.0/openaerialmap-900913/%1/%2/%3.png", 256, 0, 22) // cmoss .. max_zoom increased
|
||||
: TileMapAdapter("tile.openaerialmap.org", "/tiles/1.0.0/openaerialmap-900913/%1/%2/%3.png", 256, 0, 17)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -27,8 +27,7 @@
|
||||
namespace qmapcontrol
|
||||
{
|
||||
OSMMapAdapter::OSMMapAdapter()
|
||||
// : TileMapAdapter("tile.openstreetmap.org", "/%1/%2/%3.png", 256, 0, 17)
|
||||
: TileMapAdapter("tile.openstreetmap.org", "/%1/%2/%3.png", 256, 0, 22) // cmoss .. max_zoom increased
|
||||
: TileMapAdapter("tile.openstreetmap.org", "/%1/%2/%3.png", 256, 0, 17)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -27,8 +27,7 @@
|
||||
namespace qmapcontrol
|
||||
{
|
||||
WMSMapAdapter::WMSMapAdapter(QString host, QString serverPath, int tilesize)
|
||||
// : MapAdapter(host, serverPath, tilesize, 0, 17)
|
||||
: MapAdapter(host, serverPath, tilesize, 0, 22) // cmoss .. max_zoom increased
|
||||
: MapAdapter(host, serverPath, tilesize, 0, 17)
|
||||
{
|
||||
// param1 = serverPath.indexOf("%1");
|
||||
// param2 = serverPath.indexOf("%2");
|
||||
|
Loading…
x
Reference in New Issue
Block a user