?? 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 + -