📄 environment.h
字号:
#pragma once
#include "momaplayer.h"
#include "morecordset.h"
#include "MoRectangle.h"
#include "MoDataConnection.h"
#include "MoSymbol.h"
#include "Map.h"
#include "NrstPath.h"
//-----------------------------------------------------------------------------------------
/*LayerInfo用于包含地图中某个图层的信息*/
struct LayerInfo
{
CString szName; // 名称
CString szLayerName; // 图层名称
CString szFileName; // 图层对应的文件名称
CString szTableName; // 对应的属性表文件名称
CString szFieldName; // 字段名称
CString szType; // 大类类型
CString szSubType; // 中类类型
CString szSubType2; // 小类类型
CString szSubType3; // 次小类类型
bool bCanControl; // 可控制状态
bool bVisible; // 可显示状态,只能通过图层控制来改变
bool bSelected; // 是否已经被选择
bool bCanSelected; // 可选择状态
bool bBackground; // 是否作为背景
bool bLable; // 是否为地物加入注记
double dScale; // 图层的比例尺
double dShowScale; // 图层的显示比例尺
int nCharacterIndex; // 图层注记的字体索引
CString szFontName; // 图层注记的字体名称
int nFontSize; // 图层注记的字体大小
int nSymSize; // 符号大小
UINT nSymColor; // 符号颜色
CMoMapLayer layer; // 图层对象
CMoRecordset rsSel; // 记录集合
};
//-----------------------------------------------------------------------------------------
// MPoint结构用于定义地图中的点
struct MPoint
{
double x; // X坐标值
double y; // Y坐标值
};
//-----------------------------------------------------------------------------------------
// MLine类用于定义地图上的一条线对象
class MLine
{
public:
int nPointNumber; // 线对象包含的点的数目
MPoint* pPoint; // 点坐标数组
public:
MLine() // 构造函数
{
nPointNumber = 0;
pPoint = NULL;
}
};
//-----------------------------------------------------------------------------------------
// MapOpr枚举类型用于定义用户当前在地图上的操作类型
enum MapOpr
{
MO_NULL=0, // 无操作
MO_ZOOMIN, // 放大操作
MO_ZOOMOUT, // 缩小操作
MO_ZOOMFULL, // 全图显示操作
MO_PAN, // 漫游操作
MO_POINTSEL, // 点选择操作
MO_RECTSEL, // 巨型选择操作
MO_CIRCLESEL, // 圆选择操作
MO_POLYGONSEL,// 多边形选择操作
MO_INFO, // 获取信息操作
MO_LINEMEAS, // 长度量算操作
MO_POLYMEAS, // 面积量算操作
MO_SEACHBYDIST, // 根据距离搜索地物操作
MO_CLOSEST // 最短距离查询操作
};
//-----------------------------------------------------------------------------------------
// MapDisp枚举类型用于定义在地图中显示的地物类型
enum MapDisp
{
MO_ALL = 0, // 所有地物
MO_SCHOOL = 1, // 学校
MO_TOUR, // 旅游点
MO_HOSPITAL, // 医院
MO_SHOP, // 购物
MO_HOTEL, // 宾馆
MO_GAS, // 加油站
MO_BANK, // 银行
MO_MOVIE, // 电影音乐厅
MO_RESTAURANT, // 餐馆
MO_WC, // 公共厕所
MO_POST, // 邮局
MO_LIBRAY, // 图书馆
MO_STATION // 公交
};
//-----------------------------------------------------------------------------------------
// MapInfo结构用于包含某一地图的信息
struct MapInfo
{
CString szName; // 地图名称
CString szMetaTable; // 元数据表名
CString szIndexTable; // 索引表名
CString szType; // 类型
CMoRectangle rect; // 地图包括的范围
};
//-----------------------------------------------------------------------------------------
// IndexInfo结构包括某一地区的信息
struct IndexInfo
{
CString szName; // 名称
double dX; // 中心点的X坐标
double dY; // 中心点的Y坐标
CMoRectangle m_extent; // 显示范围
};
//-----------------------------------------------------------------------------------------
// 公交站点类
class Buses
{
public:
int nNum; // 点的数目
MPoint* pts; // 坐标数组
public:
Buses()
{
nNum = 200;
pts = NULL;
pts = new MPoint[200];
}
~Buses()
{
if(pts)
{
delete pts;
pts = NULL;
}
}
};
//-----------------------------------------------------------------------------------------
class CloestPath // 用于计算最短路径的类
{
public:
MPoint* pt1; // 起点
MPoint* pt2; // 终点
public:
CloestPath()
{
pt1 = NULL;
pt2 = NULL;
}
};
//-----------------------------------------------------------------------------------------
class CEnvironment
{
public:
CString BUSLINE_LAYERNAME; // 包含公交路线信息的图层的名称
CString BUSSTATION_LAYERNAME; // 包含公交站点信息的图层的名称
UINT SYMBOL_COLOR_NONE; // 默认符号的颜色
CString m_szDBName; // 元数据库名称
CString m_szSDBPath; // 元数据库所在的路径
CString m_AppPath; // 应用程序的路径
CString m_szHelpPath; // 帮助文件所在的路径
CMoDataConnection m_db; // 与元数据库连接的对象
int m_nSelectedLineNum; // 选择的线对象的数目
int m_nCurrMapIndex; // 当前地图在地图集合中的索引
int m_nMapNum; // 地图集合中包含的地图的数目
MapInfo* m_mapInfos; // 地图集合中地图信息数组
int m_nLayerNum; // 当前地图中包含的图层的数目
LayerInfo* m_layerInfos; // 图层信息数组
int m_nIndexNum; // 索引数目
IndexInfo* m_indexInfos; // 索引信息数组
CMoSymbol m_selSymbol; // 显示选择地物的符号
CString m_szfntStation; // 显示公交站点的字体的名称
char m_chStation; // 显示公交站点的样式
int m_nfntStation; // 显示公交站点的字体的大小
int m_MapOpr; // 用户当前操作类型
CMoMapLayer m_layerRoad; // 道路图层
LPDISPATCH m_selectedFeature;
CMoSymbol m_selectedSymbol;
short m_selectedSymbolSize;
double m_dDistance; //最短距离查询
CString m_szPlaceName;
bool m_bPathInit; // 路径初始化状态
CString m_szBusFilter; // 公交查询类型过滤字符串
double m_selectedScale;
MLine* m_drawLine;
Buses* m_buses;
CNrstPath m_path; // 最短路径对象
CloestPath* m_cloestPath;
public:
CEnvironment(void);
~CEnvironment(void);
public:
double CalcScale(CMap1* map);
double CalcScale(CMap1* map, CMoRectangle extent);
double CalcLenght(MPoint* pt,int nSize);
void CalGuassFromLB(double dLongitude, double dLatitude, double* dX, double* dY, long nCenterL);
void SubGussFs(double X,double Y,double L0, double* B, double* L);
void SubGussFs(double* X, double* Y,double B,double L,int nCenterLongi);
bool GetLayerVisible(int disp);
void SetLayerVisible(int disp, bool bVisible, double dScale);
int GetLayerIndexByName(CString szName);
int GetMapIndex(CString szMapName);
void ExecuteSpatialByPoint(CMap1* map, CMoPoint shape);
void ExecuteSpatialByRect(CMoRectangle shape, int sMode);
void ExecuteSpatialByPolygon(CMoPolygon shape, int sMode);
void DrawRecordset(CMap1* map);
void ClearSelRsts();
void DrawSelectedShape(CMap1* map);
CString GetTableName(CString szName, CString szTbleName);
CString GetLayerName(CString szName, CString szTblName);
long SearchByDistance(double dX, double dY,double dDistance, CListBox* listBox);
BOOL GetStation(CString szLineName, Buses* pBuses, int* nCount);
BOOL GetStation(PathNode* node, int nIndex, Buses* buses, int* nCount);
int GetStationOrder(CString szLineName, CString szStationName);
BOOL GetStationPt(CString szStationName, MPoint* pt);
MPoint FromMapPoint(CMap1* map, double x,double y);
CMoLine GetLine(CString szName);
CMoPoint GetPoint(CString szName);
MLine* CreateLine(CMoLine moline);
BOOL IsBusLine(CString szName);
CMoMapLayer GetLayerByName(CString szName);
BOOL IsStation(CString szName);
CString GetFieldName(CString szName);
double GetLineLength(CMoLine line);
double GetPolygonLength(CMoPolygon poly);
double GetPolygonArea(CMoPolygon poly);
double CalcArea(MPoint* pt,int nSize);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -