2025-02-07 09:16:22 +00:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <QtCore/QString>
|
|
|
|
|
#include <QtCore/QDebug>
|
|
|
|
|
#include <QtCore/QRectF>
|
|
|
|
|
|
2025-02-09 18:16:07 +00:00
|
|
|
|
#include <crs.h>
|
|
|
|
|
#include <layerprovider.h>
|
|
|
|
|
#include <mapcanvasmap.h>
|
2025-02-07 09:16:22 +00:00
|
|
|
|
|
|
|
|
|
namespace LAMPMainWidget {
|
2025-04-01 10:23:24 +00:00
|
|
|
|
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 };
|
|
|
|
|
};
|
2025-02-07 09:16:22 +00:00
|
|
|
|
|
|
|
|
|
}
|