📄 map.h
字号:
/////////map.h
////////////////////
class CMapObject;
class CMapTestDoc;
class CReadMidFile;
//颜色色数值定义
#define UD_RED 0xff
#define UD_GREEN 0xff00
#define UD_BLUE 0xff0000
///************CMapObject************//
///************CMapObject************//
class CMapObject : public CObject
{
/*
//----------//
private:
COLORREF m_PenColor;//图元颜色
//----------//*/
public:
double* m_pData;//地图元素数据(定义一个指针)
COLORREF m_nColor;//图元颜色
int m_nMaxPoint;//图元端点点数
double m_fMinX, m_fMinY, m_fMaxX, m_fMaxY;//图元区域顶点坐标
CMapTestDoc* m_pDoc;//文档指针
long m_nStyle;//地图图元类型
// double Num[BUFSIZ][2]; //定义一个二维数组,用来保存坐标,显示标注信息
int p,ONum; //定义一个全局变量用于存储坐标的数组的循环,以得到当前已经读取到了那个对象
CString Nam[BUFSIZ]; //定义一个数组 用来存储从MID文件中读取的属性信息
bool IsInView();
virtual void Draw(CDC* pDC) = 0 ;//绘制地图元素,定义了一个纯虚函数,其实现是在其派生类中的
CMapObject();
~CMapObject()
{if(m_pData) delete[] m_pData;}
};
//****************************************************8*
//*************构建地图对象类***************************
//******************************************************
/////************CMapPLine****************************
class CMapPLine : public CMapObject //构建折线类
{
public:
CMapPLine(CMapTestDoc* pDoc, CArchive& ar, int points);
void Draw(CDC* pDC);
};
/////***************CMapText****************************
class CMapText:public CMapObject //
{
public:
void Draw(CDC* pDC);
CString m_strText;
CMapText(CMapTestDoc*pDoc,CArchive&ar);
};
/////**************CMapPoint****************************
class CMapPoint:public CMapObject
{
public:
void Draw(CDC* pDC);
CMapPoint(CMapTestDoc* pDoc,CArchive& ar,CString str);
};
class CMapRegion : public CMapObject
{
public:
CMapRegion(CMapTestDoc* pDoc, CArchive& ar, int allpoint);
void Draw(CDC* pDC);
};
/**************************************************************/
///////// CReadMidFile ///////////////////////////
/************************************************************/
/**************************************************************/
///////// CMapLayer ///////////////////////////
/************************************************************/
class CMapLayer : public CObject
{
private:
CMapTestDoc* m_pDoc; //文档指针
double starX,starY,endX,endY; //定义变量用于存储起始点和结束点坐标
public:
void DrawPath(struct NODE*path,long endx,long endy);
struct NODE * CheckCLOSED(double x,double y);
void Insert(struct NODE *Successor);
struct NODE * CheckOPEN(double x,double y);
void GenerateSucc(struct NODE *BestNode,double x, double y, double dx,double dy);
struct NODE* ReturnBestNode(void);
void FindNext(struct NODE *BestNode,double dx, double dy);
void PathSearch(CPoint point);
struct NODE* FindPath(double sx,double sy,double dx,double dy);
void SetFirstPoint(CPoint point,double &x,double &y);
CString GetObjectName(CString &str);
CString GetFirstPara(CString& str);//读mif文件数据
int GetSecondPara(CString& str); //读取对象个数
int m_nMaxPoint;//图元端点点数
// CString m_strLayerName;//所在图层名
CArray<CMapObject*, CMapObject*> m_aObject;//图元对象数组
bool m_bCanDraw;
void Draw(CDC* pDC, long style);//绘制图元
/////////////////////////////////////////
double m_fMinX, m_fMinY, m_fMaxX, m_fMaxY;//图元区域顶点坐标
// CString buf[BUFSIZ]; //定义一个动态数组,用来存储属性
double Num[BUFSIZ][2]; //定义一个二维数组,用来保存坐标,显示标注信息
int p; //定义一个全局变量用于存储坐标的数组的循环
bool n_point,n_CancelFind;//定义一个布尔型量用于判断是否已经得到了第一个点
CMapLayer(CMapTestDoc* pDoc, CArchive& ar);//和文件关联
CMapLayer();
~CMapLayer();
};
struct obj_point
{
CString name; //属性名
int shape;
int color;
int size;
float longitude; //经度
float latitude; //纬度
obj_point * next;
};
struct obj_pline
{
CString name; //属性名
int pointnum; //折线点数
int penwidth;
int pencolor;
double *longitude; //经度
double *latitude; //纬度
obj_point * next;
};
struct obj_region ///区域
{
CString name; //属性名
int pointnum; //折线点数
double *longitude; //经度
double *latitude; //纬度
int penwidth;
int pencolor;
int brushpattem ;
long forecolor,backcolor;
float ccnx,ceny;
obj_region * next;
};
struct NODE { ///节点链表
double f,h; //h:到终点的距离,f:f值,即估价值 f=g+h
double g,tmpg; // g:从起点到当前点的实际距离
double x,y; //为点的坐标
struct NODE *Parent;
struct NODE *NextNode; /* for filing purposes */
} ;
//struct NODE *OPEN;
//struct NODE *CLOSED;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -