用VC++实现矢量地图背景下的实时显示
2008-11-14 19:35:22 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劎绮妵鍕箳鐎n亞浠鹃梺闈涙搐鐎氫即鐛崶顒夋晬婵絾瀵ч幑鍥蓟閻斿摜鐟归柛顭戝枛椤牆顪冮妶搴′簼缂侇喗鎸搁悾鐑藉础閻愬秵妫冮崺鈧い鎺戝瀹撲礁鈹戦悩鎻掝伀缁惧彞绮欓弻娑氫沪閹规劕顥濋梺閫炲苯澧伴柟铏崌閿濈偛鈹戠€n€晠鏌嶆潪鎷屽厡闁汇倕鎳愮槐鎾存媴閸撴彃鍓卞銈嗗灦閻熲晛鐣烽妷褉鍋撻敐搴℃灍闁绘挻娲橀妵鍕箛闂堟稐绨肩紓浣藉煐濮樸劎妲愰幘璇茬闁冲搫鍊婚ˇ鏉库攽椤旂》宸ユい顓炲槻閻g兘骞掗幋鏃€鐎婚梺瑙勬儗閸樺€熲叺婵犵數濮烽弫鍛婃叏椤撱垹纾婚柟鍓х帛閳锋垶銇勯幒鍡椾壕缂備礁顦遍弫濠氱嵁閸℃稒鍊烽柛婵嗗椤旀劕鈹戦悜鍥╃У闁告挻鐟︽穱濠囨嚃閳哄啰锛滈梺褰掑亰閸欏骸鈻撳⿰鍫熺厸閻忕偟纭堕崑鎾诲箛娴e憡鍊梺纭呭亹鐞涖儵鍩€椤掑啫鐨洪柡浣圭墪閳规垿鎮欓弶鎴犱桓闂佸湱枪閹芥粎鍒掗弮鍫熷仺缂佸顕抽敃鍌涚厱闁哄洢鍔岄悘鐘绘煕閹般劌浜惧┑锛勫亼閸婃牠宕濋敃鈧…鍧楀焵椤掍胶绠剧€光偓婵犱線鍋楀┑顔硷龚濞咃絿妲愰幒鎳崇喓鎷犻懠鑸垫毐闂傚倷鑳舵灙婵炲鍏樺顐ゆ嫚瀹割喖娈ㄦ繝鐢靛У绾板秹寮查幓鎺濈唵閻犺櫣灏ㄥ銉р偓瑙勬尭濡繂顫忛搹鍦<婵☆垰鎼~宥囩磽娴i鍔嶉柟绋垮暱閻g兘骞嬮敃鈧粻濠氭偣閸パ冪骇鐎规挸绉撮—鍐Χ閸℃ê闉嶇紓浣割儐閸ㄥ墎绮嬪澶嬪€锋い鎺嶇瀵灝鈹戦埥鍡楃仯闁告鍕洸濡わ絽鍟崐鍨叏濡厧浜鹃悗姘炬嫹

程序清单2 MapAppView.cpp文件
void CMapAppView::OnInitialUpdate()
{
char str[256];
CView::OnInitialUpdate();
char str[256];
///创建航显底图
mapinfo.Do("Open Table "F:Province.tab" ReadOnly Interactive");
mapinfo.Do("Open Table "f:Capitals.tab" ReadOnly Interactive");
mapinfo.Do("Open Table "f:China.tab" ReadOnly Interactive");
sprintf(str,"Set Next Document Parent %lu Style 2 ",(long)(UINT)m_hWnd);
mapinfo.Do(str);//创建地图窗口
/*设置地图窗口的图层,由最上一层开始是中国疆域,各省疆域,省会城市,并标注上省会城市的名字*/
mapinfo.Do("Map From Capitals, Province, China");
mapinfo.Do("Set Map Layer 1 Label With Capital_Character_Name Parallel On Auto On Visibility On");
//获取地图窗口的ID号和句柄
m_lWindowid = atol(mapinfo.Eval("WindowID(0)")); file://窗口ID
sprintf(str,"WindowInfo(0, %u)", WIN_INFO_WND); file://窗口HWND
m_hWindowHwnd = (HWND)atol(mapinfo.Eval(str));
//调整地图窗口尺寸,将地图窗口放置在右半屏上
sprintf(str,
"Set Window %lu Position (8.3,0) Width 8.4 Height 6.05 ScrollBars Off SysMenuClose Off", m_lWindowid);
mapinfo.Do(str);
//调整地图窗口视野和中心点
double m_dView_center_x=113.35; file://地图窗口中心点,经纬度
double m_dView_center_y=35.04;
double m_dView_zoom = 4000.0; file://地图窗口视野,"km"
sprintf(str,"Set Map Window %lu Zoom %lf Units "km" Center (%lf,%lf) XY Units "degree"", m_lWindowid,m_dView_zoom,m_dView_center_x,m_dView_center_y);
mapinfo.Do(str);//设置地图窗口中心点窗口视野
//设置地图窗口漫游缩放的右键菜单
mapinfo.Do("Create Menu "MapshellShortcut" ID 17 as "漫游" calling 1702,"缩小" calling 1706, "放大" calling 1705 ,"(-"");
//创建实时航迹显示图层
mapinfo.Do("Create Table plane (ID Integer) File "f:plane.tab" ");
mapinfo.Do("Create Map For plane");
sprintf(str,"Add Map Window %lu Layer plane Animate",m_lWindowid);
mapinfo.Do(str); file://实时航迹图层设置为快速刷新}
更多精彩
赞助商链接