亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? environment.cpp

?? 北京市交通mo+visual c++開發(fā)實(shí)例
?? CPP
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
#include "StdAfx.h"
#include "environment.h"
#include <math.h>
#include "MoPoint.h"
#include "MoPolygon.h"
#include "MapObjects2.h"
#include "MainFrm.h"
#include "NameGisView.h"
#include "AppApi.h"
#include "Crack.h"
//-----------------------------------------------------------------------------------------
CEnvironment::CEnvironment(void)
{
	m_MapOpr = MO_NULL;
	
	m_selSymbol.CreateDispatch(TEXT("MapObjects2.Symbol"));
	m_selSymbol.SetSymbolType(0);  
	m_selSymbol.SetColor(0xff);  
	
	m_szDBName = "";
	m_szSDBPath = "";
	m_AppPath = "";
	m_szHelpPath = "";

	m_nCurrMapIndex = -1;
	m_nMapNum = -1;
	m_mapInfos = NULL;
	
	m_nLayerNum = -1;
	m_layerInfos = NULL;

	m_nIndexNum = -1;
	m_indexInfos = NULL;

	m_szfntStation = "";
	m_chStation = 'a';
	m_nfntStation = 10;

	m_nSelectedLineNum = 0;

	m_selectedFeature = NULL;
	m_selectedSymbol = NULL;
	m_selectedSymbolSize = -1;

	m_selectedScale = -1.0;
	m_buses = NULL;
	m_drawLine = NULL;

	m_cloestPath = new CloestPath(); 
}
//-----------------------------------------------------------------------------------------
CEnvironment::~CEnvironment(void)
{
	// 釋放資源
	if(m_layerInfos)
	{
		delete []m_layerInfos;
		m_layerInfos = NULL;
	}
	if(m_mapInfos)
	{
		delete []m_mapInfos;
		m_mapInfos = NULL;
	}
	if(m_indexInfos)
	{
		delete []m_indexInfos;
		m_indexInfos = NULL;
	}

	if(m_drawLine)
	{
		for(int i=0; i<m_nSelectedLineNum; i++)
		{
			if(m_drawLine[i].pPoint)
			{
				delete m_drawLine[i].pPoint;
				m_drawLine[i].pPoint = NULL;
			}
		}
		delete m_drawLine;
		m_drawLine = NULL;
	}

	if(m_buses)
	{
		delete m_buses;
		m_buses = NULL;
	}
}
//-----------------------------------------------------------------------------------------
// 功能:計(jì)算地圖比例尺
// 返回值:地圖比例尺
double CEnvironment::CalcScale(CMap1* map)
{
	HWND hWnd = (HWND)map->GetHWnd();
	HDC hDC = GetDC(hWnd);
	double dpix = GetDeviceCaps(hDC, LOGPIXELSX);
	
	MPoint* pts = new MPoint[2];
	CMoRectangle extent = map->GetExtent();
	pts[0].x = extent.GetLeft();
	pts[0].y = extent.GetTop();
	pts[1].x = extent.GetRight();
	pts[1].y = extent.GetTop();
	
	// 計(jì)算pts點(diǎn)對(duì)象數(shù)組定義的點(diǎn)之間的長(zhǎng)度
	double dLen1 = CalcLenght(pts,2);
	CRect rect;
	map->GetWindowRect(&rect);
	double dLen2 = rect.Width() / dpix * 2.54 /100;

	delete pts;
	pts = NULL;

	return dLen1 / dLen2;
}
//-----------------------------------------------------------------------------------------
// 計(jì)算一條線的長(zhǎng)度
// 參數(shù)MPoint*表示一點(diǎn)對(duì)象數(shù)組
// 參數(shù)nSize表示點(diǎn)對(duì)象數(shù)組中點(diǎn)對(duì)象的個(gè)數(shù)
// 返回值為線的長(zhǎng)度
double CEnvironment::CalcLenght(MPoint* pt,int nSize)
{
	double dLength = 0;
	double x1=0,x2=0,y1=0,y2=0;
	int nCenterL = ((int)(pt[0].x)/6+1)*6-3; 

	for(int i=0;i<nSize-1;i++)
	{
		CalGuassFromLB(pt[i].x, pt[i].y, &x1, &y1, nCenterL);
		CalGuassFromLB(pt[i+1].x, pt[i+1].y, &x2, &y2, nCenterL);
		dLength += sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
	}

	return dLength;
}
//-----------------------------------------------------------------------------------------
void CEnvironment::CalGuassFromLB(double dLongitude, double dLatitude, 
								  double* dX, double* dY, long nCenterL)
{			
	int CenterL = (int)nCenterL;

	SubGussFs(dX, dY, dLatitude, dLongitude, CenterL);
	nCenterL = (long)CenterL;
}
//-----------------------------------------------------------------------------------------
void CEnvironment::SubGussFs(double X,double Y,double L0, double* B, double* L)
{
	double p=57.29577951472;
	const double a=6.378245000e+06;
	const double e2=0.00669342162297;
	const double e12=0.00673852541468;
	const double c0=0.157046064172e-06;
	const double c1=0.005051773759;
	const double c2=0.000029837302;
	const double c3=0.000000238189;

	double bf0 = c0*X;
	double bf0c = cos(bf0);
	double bf0s = sin(bf0);
	double bf = bf0 + bf0c * (c1 * bf0s - c2 * pow(bf0s, 3) + c3 * pow(bf0s, 5));
	double bt = tan(bf);
	double bc = cos(bf);
	double bs = sin(bf);
	double bi = e12 * pow(bc,2);
	double v2 = 1.0e+0 +bi;
	double bn = a/sqrt(1.0-e2* pow(bs,2));
	double yn=Y/bn;

	// 計(jì)算緯度
	double b1 = -v2 * bt * pow(yn, 2) / 2.0;
	double b2 = -(5.0 + 3.0 * pow(bt, 2) + bi - 9.0 * bi* pow(bt, 2)) 
		        * b1 * pow(yn, 2) / 12.0;
	double b3 = (61.0 + 90.0 * pow(bt, 2) + 45.0 * pow(bt, 4)) * b1 * pow(yn, 4)/ 360.0;
	*B = bf + b1 + b2 + b3;
	*B = *B * p;

	// 計(jì)算經(jīng)度
	double l1 = yn/bc;
	double l2 = -(1.0 + 2.0 * pow(bt, 2) + bi) * l1 * pow(yn, 2) / 6.0;
	double l3 = (5.0 + 28.0 * pow(bt , 2) + 24.0 * pow(bt, 4) 
		         + 6.0 * bi + 8.0 * bi * pow(bt, 2)) 
				 * l1 * pow(yn, 4) / 120.0;
	*L = l1 + l2 + l3;
	*L = *L * p;

	*L += L0;
	if(*L > 360.0)
		*L -= 360.0;
}
//-----------------------------------------------------------------------------------------
void CEnvironment::SubGussFs(double* X, double* Y,double B,double L,int nCenterLongi)
{
	//高斯投影分帶
	int nzonenum;
	if(nCenterLongi==0)
	{
		nzonenum = (int)L/6+1;
		nCenterLongi = nzonenum*6-3;
	}
	else
		nzonenum = (int)nCenterLongi/6+1;

	//以弧度為單位的經(jīng)緯度數(shù)值
	double rB = B / 180 * 3.1415926;
	double rL = (L - nCenterLongi) / 180 * 3.1415926;		//同時(shí)計(jì)算了中央經(jīng)線
	//1980坐標(biāo)系參數(shù)
	const double a = 6378245.00;		//長(zhǎng)軸
	const double b = 6356863.50;		//短軸
	double sqre1 = ( a * a - b * b) / ( a * a);	//第一偏心率平方
	//B:緯度
	//L:精度
	//子午圈曲率半徑
	double sinb = sin(rB);
	double cosb = cos(rB);
	double M = a *(1 - sqre1) / (1 - sqre1 * sinb * sinb) / sqrt( 1 - sqre1 * sinb * sinb);
	//卯酉圈曲率半徑
	double N = a / sqrt(1 - sqre1 * sinb * sinb);
	double sqrita = N / M - 1;

	//該緯度點(diǎn)到赤道的子午線弧長(zhǎng)
	double s = a * (1 - sqre1 ) * (1.00505117739 * rB - 0.00506237764 / 2 
		        * sin(2*rB) + 0.0000106245 / 4 * sin(4*rB) - 0.00000002081 / 
				6 * sin(6 * rB));

	double tanb = tan(rB);
	*X = s + rL * rL * N / 2 * sinb * cosb + rL * rL * rL * rL * N / 24 
		 * sinb * cosb * cosb *cosb * (5 - tanb * tanb + 9 * sqrita * sqrita + 4 * sqrita);
	*Y = rL * N * cosb + rL * rL * rL * N / 6 * cosb * cosb * cosb * 
		(1 - tanb * tanb + sqrita) + rL * rL * rL * rL * rL * N / 120 
		* cosb * cosb * cosb * cosb * cosb * 
		(5 - 18 * tanb * tanb + tanb * tanb * tanb * tanb);
	*Y = *Y + 500000 + nzonenum * 1.0e+6;
}
//-----------------------------------------------------------------------------------------
// 得到某類地物所在圖層是否可見
bool CEnvironment::GetLayerVisible(int disp)
{
	bool bVisible = true;
	int  nType = 2;
	CString szSubType = "";

	// 根據(jù)地物類型,設(shè)置szSubType變量
	switch ((MapDisp)disp)
	{
		case MO_ALL:
			nType = 1;
			break;
		case MO_HOSPITAL:
			szSubType = "醫(yī)院";
			break;
		case MO_SCHOOL:
			szSubType = "教育";
			break;
		case MO_SHOP:
			szSubType = "零售";
			break;
		case MO_TOUR:
			szSubType = "旅游";
			break;
		case MO_GAS:
			break;
		case MO_HOTEL: 
			szSubType = "住宿";
			break;
		case MO_LIBRAY:
			szSubType = "圖書館";
			nType = 3;
			break;
		case MO_MOVIE:
			szSubType = "影劇院、音樂廳";
			nType = 3;
			break;
		case MO_POST:
			szSubType = "郵政";
			break;
		case MO_RESTAURANT:
			szSubType = "餐飲";
			break;
		case MO_WC:
			szSubType = "dddd";
			break;
		case MO_STATION:
			szSubType = "站點(diǎn)";
			nType = 4;
			break;
	}

	int nCount = 0;
	for (int i = 0; i<m_nLayerNum; i ++)
	{
		if (m_layerInfos[i].bCanControl) 
		{
			switch (nType)
			{
				case 1:
					nCount ++;
					if (!m_layerInfos[i].bVisible)
					{
						return false;
					}
					break;
				case 2:
					if (szSubType == m_layerInfos[i].szSubType)
					{
						nCount ++;
						if (!m_layerInfos[i].bVisible)
						{
							return false;
						}
					}
					break;
				case 3:
					if (szSubType == m_layerInfos[i].szSubType2)
					{
						nCount ++;
						if (!m_layerInfos[i].bVisible)
						{
							return false;
						}
					}
					break;
				case 4:
					if (szSubType == m_layerInfos[i].szSubType3)
					{
						nCount ++;
						if (!m_layerInfos[i].bVisible)
						{
							return false;
						}
					}
					break;
			}
		}
	}		

	if (0 == nCount)
		bVisible = false;
	return bVisible;
}
//-----------------------------------------------------------------------------------------
// 功能:設(shè)置圖層是否可見
void CEnvironment::SetLayerVisible(int disp, bool bVisible, double dScale)
{
	int  nType = 2;
	CString szSubType = "";
    
	// 根據(jù)地物類型設(shè)置nType與szSubType變量
	switch(disp)
	{
	case MO_ALL:
		nType = 1;
		break;
	case MO_HOSPITAL:
		szSubType = "醫(yī)院";
		break;
	case MO_SCHOOL:
		szSubType = "教育";
		break;
	case MO_SHOP:
		szSubType = "零售";
		break;
	case MO_TOUR:
		szSubType = "旅游";
		break;
	case MO_GAS:
		break;
	case MO_HOTEL: 
		szSubType = "住宿";
		break;
	case MO_LIBRAY:
		szSubType = "圖書館";
		nType = 3;
		break;
	case MO_MOVIE:
		szSubType = "影劇院、音樂廳";
		nType = 3;
		break;
	case MO_POST:
		szSubType = "郵政";
		break;
	case MO_RESTAURANT:
		szSubType = "餐飲";
		break;
	case MO_WC:
		szSubType = "廁所";
		break;
	case MO_STATION:
		szSubType = "站點(diǎn)";
		nType = 4;
		break;
	}
    
	for (int i = 0; i < m_nLayerNum; i ++)
	{
		if(m_layerInfos[i].bCanControl) 
		{
			switch (nType)
			{
			case 1:
				if (!bVisible)
				{
					m_layerInfos[i].bVisible = bVisible;
					// 設(shè)置圖層的可見性
					m_layerInfos[i].layer.SetVisible(m_layerInfos[i].bVisible);
				}
				else
				{
					m_layerInfos[i].bVisible = bVisible;

					if (m_layerInfos[i].dScale > dScale)
						// 設(shè)置圖層的可見性
						m_layerInfos[i].layer.SetVisible(m_layerInfos[i].bVisible);
				}
				break;
			case 2:
				if (szSubType == m_layerInfos[i].szSubType)
				{
					if (!bVisible)
					{
						m_layerInfos[i].bVisible = bVisible;
						m_layerInfos[i].layer.SetVisible(m_layerInfos[i].bVisible);
					}
					else
					{
						m_layerInfos[i].bVisible = bVisible;
                        
						if (m_layerInfos[i].dScale > dScale)
							m_layerInfos[i].layer.SetVisible(m_layerInfos[i].bVisible);
					}
				}
				break;
			case 3:
				if (szSubType == m_layerInfos[i].szSubType2)
				{
					if (!bVisible)
					{
						m_layerInfos[i].bVisible = bVisible;
						m_layerInfos[i].layer.SetVisible(m_layerInfos[i].bVisible);
					}
					else
					{
						m_layerInfos[i].bVisible = bVisible;

						if (m_layerInfos[i].dScale > dScale)
							m_layerInfos[i].layer.SetVisible(m_layerInfos[i].bVisible);
					}
				}
				break;
			case 4:
				if (szSubType == m_layerInfos[i].szSubType3)
				{
					if (!bVisible)
					{
						m_layerInfos[i].bVisible = bVisible;
						m_layerInfos[i].layer.SetVisible(m_layerInfos[i].bVisible);
					}
					else
					{
						m_layerInfos[i].bVisible = bVisible;

						if (m_layerInfos[i].dScale > dScale)
							m_layerInfos[i].layer.SetVisible(m_layerInfos[i].bVisible);
					}
				}
				break;
			}
		}
	}
}
//-----------------------------------------------------------------------------------------
// 根據(jù)圖層的名稱得到該圖層在地圖的圖層集合中的索引值
// 參數(shù)CString szName:圖層的名稱
// 返回值:圖層在圖層集合中的索引值
int CEnvironment::GetLayerIndexByName(CString szName)
{
	int nIndex = -1;

	for (int i=0; i<m_nLayerNum; i ++)
	{		
		if (szName == m_layerInfos[i].szName)
		{
			// 如果圖層的名稱等于輸入的參數(shù),則表示找到
			nIndex = i;
			// 退出循環(huán)
			break;
		}
	}

	return nIndex;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
看国产成人h片视频| 午夜精品久久久久久久久久| 7777精品伊人久久久大香线蕉超级流畅 | 日韩视频免费观看高清完整版在线观看| 成人va在线观看| 成人免费毛片a| 97久久精品人人澡人人爽| 成人av动漫在线| 91香蕉视频污| 欧美丝袜丝交足nylons| 欧美酷刑日本凌虐凌虐| 91精品一区二区三区在线观看| 欧美一级黄色录像| www精品美女久久久tv| 久久久久久久电影| 国产精品久久久久永久免费观看| 国产精品天美传媒沈樵| 国产精品久久国产精麻豆99网站 | 自拍偷拍亚洲综合| 一级女性全黄久久生活片免费| 亚洲精品免费播放| 一级做a爱片久久| 日韩激情av在线| 久久精品国产亚洲一区二区三区| 国产一区 二区 三区一级| 成人午夜激情片| 91精品91久久久中77777| 欧美丰满少妇xxxxx高潮对白| 欧美一区二区日韩| 国产欧美一区二区精品性色超碰| 亚洲精品欧美综合四区| 麻豆精品视频在线观看| 成人在线视频一区| 欧美丰满高潮xxxx喷水动漫| 欧美成人猛片aaaaaaa| 国产婷婷一区二区| 亚洲成av人片www| 国产成人亚洲综合a∨猫咪| 欧美一区二区在线看| 久久久夜色精品亚洲| 亚洲精品国产无天堂网2021| 精品综合久久久久久8888| 国产白丝精品91爽爽久久| 欧美性大战久久久久久久蜜臀| 欧美mv和日韩mv国产网站| 成人欧美一区二区三区1314| 久久99精品国产麻豆婷婷洗澡| 99久久99久久精品国产片果冻 | 18涩涩午夜精品.www| 免费一区二区视频| 91丨九色丨尤物| 久久久久久久久久久久电影| 亚洲精品免费一二三区| 国产99久久久国产精品潘金| 欧美久久一二区| 亚洲欧美另类小说| 国产高清视频一区| 精品视频一区二区三区免费| 欧美高清在线一区二区| 黄页网站大全一区二区| 欧美日韩成人一区二区| 亚洲色图.com| 本田岬高潮一区二区三区| 精品sm捆绑视频| 日韩电影在线观看网站| 欧美三区在线观看| 一区二区三区成人| 一本久久a久久精品亚洲| 欧美激情综合在线| 国产成人在线看| 国产日韩欧美不卡在线| 国产成人免费在线视频| 国产亚洲精品bt天堂精选| 国产精品一区二区免费不卡| 久久精品一区二区三区不卡牛牛| 国内精品国产三级国产a久久| 日韩精品一区二区三区在线观看| 视频一区免费在线观看| 制服.丝袜.亚洲.中文.综合| 日韩成人精品在线| 欧美不卡在线视频| 国产精品2024| 亚洲国产成人午夜在线一区| 成人免费视频免费观看| 亚洲男帅同性gay1069| 色噜噜狠狠成人网p站| 亚洲成人精品在线观看| 91精品国产综合久久精品app | 国产精品一卡二| 欧美国产禁国产网站cc| 91视频.com| 三级一区在线视频先锋 | 国产精品视频yy9299一区| 成人激情小说乱人伦| 亚洲色图另类专区| 欧美精品国产精品| 国产精品一级在线| 一区二区三区四区蜜桃 | 国产一区日韩二区欧美三区| 国产欧美日韩精品在线| 色爱区综合激月婷婷| 亚洲国产精品久久人人爱| 日韩欧美一级二级三级| 播五月开心婷婷综合| 一级特黄大欧美久久久| 亚洲精品一区二区三区99| 不卡一区二区在线| 视频一区二区中文字幕| 国产精品视频你懂的| 欧美日韩国产综合久久| 国产成都精品91一区二区三| 亚洲国产日韩一区二区| 久久久国产综合精品女国产盗摄| 色综合久久天天| 韩国毛片一区二区三区| 一区二区三区不卡视频在线观看| 日韩欧美一区二区免费| 91精彩视频在线观看| 国产一区二区三区在线观看免费视频 | 精品国产青草久久久久福利| 波波电影院一区二区三区| 日本欧美一区二区在线观看| 欧美国产一区二区在线观看 | 国产色一区二区| 在线成人av网站| 91免费在线播放| 韩国三级中文字幕hd久久精品| 一级日本不卡的影视| 国产精品动漫网站| 精品国产乱码久久久久久闺蜜| 色综合一区二区| 国产·精品毛片| 久久精品国产亚洲a| 亚洲一区二区三区国产| 国产精品成人免费在线| 久久久久国产精品麻豆| 91精选在线观看| 欧美日韩午夜在线视频| 一本久道久久综合中文字幕| 成人免费视频一区| 国产激情一区二区三区四区| 久久9热精品视频| 男人操女人的视频在线观看欧美| 亚洲三级在线免费观看| 综合电影一区二区三区| 1024成人网| 亚洲日本在线观看| 亚洲欧美日韩电影| 亚洲乱码精品一二三四区日韩在线| 国产亚洲女人久久久久毛片| 精品粉嫩超白一线天av| 精品剧情在线观看| 精品国产亚洲在线| 欧美va天堂va视频va在线| 日韩欧美中文字幕精品| 91精品久久久久久久99蜜桃| 欧美一区二区二区| 日韩一区二区三区免费看 | 亚洲色图视频网站| 亚洲欧美一区二区三区极速播放| 中文文精品字幕一区二区| 国产欧美精品一区二区色综合朱莉| 26uuuu精品一区二区| 久久网站热最新地址| 久久久久久久精| 日本中文一区二区三区| 麻豆91免费看| 国产一区二区伦理片| 丁香婷婷综合色啪| 91久久线看在观草草青青| 日本乱人伦一区| 欧美丰满美乳xxx高潮www| 精品国产99国产精品| 国产人久久人人人人爽| 一区二区三区四区在线免费观看| 亚洲国产成人porn| 精品一二三四区| 成人综合婷婷国产精品久久蜜臀| 色噜噜狠狠一区二区三区果冻| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲精品久久久蜜桃| 婷婷综合另类小说色区| 国产一区二区成人久久免费影院| 成人激情小说乱人伦| 制服丝袜中文字幕一区| 久久九九影视网| 一区二区三区四区国产精品| 日本一区中文字幕| 国产成人自拍高清视频在线免费播放| 99视频有精品| 欧美一级片在线看| **性色生活片久久毛片| 丝袜美腿亚洲色图| 国产999精品久久| 欧美日韩一卡二卡| 国产欧美日本一区二区三区| 偷偷要91色婷婷| 99久久婷婷国产综合精品电影 | 91精品一区二区三区久久久久久 | 777精品伊人久久久久大香线蕉|