⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 map.h

📁 gps 可以打开.gps
💻 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 + -