150 lines
3.2 KiB
C++
150 lines
3.2 KiB
C++
#pragma once
|
||
|
||
#include <QtCore/QString>
|
||
#include <QtCore/QDebug>
|
||
#include <QtCore/QRectF>
|
||
|
||
#include <crs.h>
|
||
#include <layerprovider.h>
|
||
#include <mapcanvasmap.h>
|
||
|
||
namespace LAMPMainWidget {
|
||
class MapCanvas;
|
||
|
||
/*
|
||
* 地图容器中的图层,属于数据的集合并不包含任何显示需要的数据
|
||
*/
|
||
class MapLayer {
|
||
public:
|
||
MapLayer(const QString &id, CRS *crs, MapCanvas *mapCanvas);
|
||
MapLayer(const MapLayer &other);
|
||
MapLayer(MapLayer &&other) noexcept;
|
||
virtual ~MapLayer();
|
||
MapLayer &operator=(const MapLayer &other);
|
||
MapLayer &operator=(MapLayer &&other) noexcept;
|
||
|
||
public:
|
||
/*
|
||
* 获取图层的id
|
||
* @return 图层id字符串
|
||
*/
|
||
const QString &id() const { return mId; }
|
||
|
||
/*
|
||
* 获取图层的显示z值
|
||
* @return z值
|
||
*/
|
||
const int zValue() const { return mZValue; }
|
||
|
||
/*
|
||
* 获取图层的坐标系
|
||
* @return 图层的坐标系
|
||
*/
|
||
const CRS &crs() const { return *mCrs; }
|
||
|
||
/*
|
||
* 获取图层所属的map容器
|
||
* @return 图层所属的map容器
|
||
*/
|
||
const MapCanvas &mapCanvas() const { return *mMapCanvas; }
|
||
|
||
/*
|
||
* 获取图层的数据提供对象
|
||
* @return 图层的数据提供对象
|
||
*/
|
||
const LayerProvider &provider() const { return *mProvider; }
|
||
|
||
/*
|
||
* 设置图层的id
|
||
* @param id 图层id
|
||
*/
|
||
void setId(const QString &id) { mId = id; }
|
||
|
||
/*
|
||
* 设置图层的z值
|
||
* @param zValue 图层z值
|
||
*/
|
||
void setZValue(const int zValue) { mZValue = zValue; }
|
||
|
||
/*
|
||
* 设置图层的坐标系
|
||
* @param crs 图层坐标系
|
||
*/
|
||
void setCrs(CRS *const crs) { mCrs = crs; }
|
||
|
||
/*
|
||
* 设置图层的数据提供对象
|
||
* @param provider 图层的数据提供对象
|
||
*/
|
||
void setProvider(LayerProvider *const provider) { mProvider = provider; }
|
||
|
||
/*
|
||
* 获取图层的pixel:m比例尺
|
||
* @return 图层的分辨率
|
||
*/
|
||
virtual double resolution() const = 0;
|
||
|
||
/*
|
||
* 获取图层的整个显示边界
|
||
* @return 图层的显示边界
|
||
*/
|
||
virtual QRectF extent() const = 0;
|
||
|
||
/*
|
||
* 获取图层的当前zoom值
|
||
* @return 图层的当前zoom值
|
||
*/
|
||
int zoomValue() const { return mZoomValue; }
|
||
|
||
/*
|
||
* 设置图层的当前zoom值
|
||
* @param zoom 图层zoom值
|
||
*/
|
||
virtual void setZoomValue(int zoom) { mZoomValue = zoom; }
|
||
|
||
/*
|
||
* 设置图层所属的地图容器
|
||
* @param map 图层所属的地图容器
|
||
*/
|
||
void setMap(MapCanvasMap *map) { mMapCanvasMap = map; }
|
||
|
||
/*
|
||
* 获取图层的显示图元,这是图层最终的显示对象
|
||
* @return 图层的显示图元
|
||
*/
|
||
MapCanvasMap *map() const { return mMapCanvasMap; }
|
||
|
||
/*
|
||
* 判断图层是否可显示
|
||
* @return 图层是否可显示,true显示,false则不显示
|
||
*/
|
||
bool isVisible() const {return mIsVisible;}
|
||
|
||
/*
|
||
* 设值图层的可显示属性
|
||
* @param visible true为显示,false则不显示
|
||
*/
|
||
void setVisiblity(bool visible) {mIsVisible = visible;}
|
||
|
||
/*
|
||
* 刷新图层内容
|
||
* @return 刷新图层内容,true则成功,否则为失败
|
||
*/
|
||
virtual void update();
|
||
|
||
protected:
|
||
QString mId;
|
||
CRS *mCrs;
|
||
int mZValue;
|
||
int mZoomValue;
|
||
LayerProvider *mProvider;
|
||
MapCanvasMap *mMapCanvasMap;
|
||
const MapCanvas *mMapCanvas;
|
||
bool mIsVisible{false};
|
||
|
||
private:
|
||
const static int kDefaultZoomValue{10};
|
||
};
|
||
|
||
}
|