71 lines
1.6 KiB
C++
71 lines
1.6 KiB
C++
#pragma once
|
||
|
||
#include <QString>
|
||
#include <QRectF>
|
||
|
||
#include <maplayer.h>
|
||
#include <mapcanvas.h>
|
||
#include <webmercator.h>
|
||
#include <tmsproviderfactory.h>
|
||
|
||
namespace LAMPMainWidget
|
||
{
|
||
/**
|
||
* tms服务所用图层
|
||
*/
|
||
class TmsLayer : public MapLayer
|
||
{
|
||
public:
|
||
TmsLayer(TmsProviders provider,
|
||
const QString& id,
|
||
MapCanvas* mapCanvas,
|
||
CRS* crs = new WebMercator{});
|
||
|
||
public:
|
||
/**
|
||
* 获取图层在当前zoom值的分辨率
|
||
* @return 图层分辨率
|
||
*/
|
||
double resolution() const override;
|
||
|
||
/**
|
||
* 获取图层的整个显示边界,一般情况下等同于坐标系的边界
|
||
* @return 图层的显示区域
|
||
*/
|
||
QRectF extent() const override;
|
||
|
||
/**
|
||
* 设置图层的zoom值
|
||
* @param zoom 图层zoom值
|
||
*/
|
||
void setZoomValue(int zoom) override;
|
||
|
||
/**
|
||
* 由rect和zoom值解析出该区域内的所有瓦片url路径,
|
||
* 并将结果存储在tiles中
|
||
* @param rect 区域(经纬度坐标)
|
||
* @param zoom zoom值
|
||
* @param tiles 结果
|
||
* @param size 下载的瓦片大小
|
||
* @return 是否解析成功
|
||
*/
|
||
bool parseTiles(const QRectF& rect, int zoom, QHash<QPoint, QString>& tiles, QSize& size) const;
|
||
|
||
/**
|
||
* 图层所能支持的最大zoom值
|
||
* @return 最大zoom值
|
||
*/
|
||
virtual int maxZoom() const { return kMaxZoom; }
|
||
|
||
/**
|
||
* 图层所能支持的最小zoom值
|
||
* @return 最小zoom值
|
||
*/
|
||
virtual int minZoom() const { return kMinZoom; }
|
||
|
||
private:
|
||
static const int kMinZoom{4};
|
||
static const int kMaxZoom{18};
|
||
};
|
||
}
|