?? mapx.txt
字號:
注冊和注銷
MapX對圖層的引用和創(chuàng)建實例
如何建立一個新的圖層?所建立的圖層是永久的還是臨時的?
如何獲得已有的圖層對象?
如何創(chuàng)建一個圖元,并設(shè)置圖元的屬性?并且在圖層中繪制出來?
如何建立一個新的圖層?所建立的圖層是永久的還是臨時的?
可以使用layers對象的CreateLayer方法
CreateLayer方法使您可以創(chuàng)建新的臨時或永久Maplnfo表圖層。所創(chuàng)建的表有一列名,用于標注和數(shù)據(jù)綁定。當(dāng)要添加或更新圖元時,Name屬性將會放人圖元名稱列中。
函數(shù)原形:
CreateLayer(Name,[FileSpec],[Position],[KeyLength],[CoordSys])
參數(shù)含義:
Name
指定圖層的名稱(圖層的用戶名)。
FileSpec
變體型:所創(chuàng)建圖層位置的路徑名。文件名應(yīng)包括.tab擴展名其他組 成Maplnfo表的文件(.map,·dat,等等)在與.tab文件的相同路徑下創(chuàng) 建。如果沒有給定文件名,則創(chuàng)建臨時圖層,當(dāng)?shù)貓D或OCX被刪除。
Position
變體型:它在圖層列表中的初始位置。如果省略,自動圖層定位運算法則將給圖層分派基于圖層類型的圖層順序。
KeyLength
變體型:添加到表中放置圖元名稱的列的長度。如果省略,默認
CoordSys
變體型:CoordSys對象,指定存儲新圖層的坐標系。可選;如果省略,使用Map.NumericCoordSys屬性。
如何獲得已有的圖層對象?
CMapXLayer layer = m_ctrlMapX.GetLayers().Item("scratch layer");
如何創(chuàng)建一個圖元,并設(shè)置圖元的屬性?并且在圖層中繪制出來?
以下代碼實現(xiàn)了創(chuàng)建一個臨時圖層并在土層中繪制一個文本類型的圖元
CMapX m_ctrlMapX;
CMapXLayer m_lyrMapXLayer;
m_lyrMapXLayer = m_ctrlMapX.GetLayers().CreateLayer("TempLayer",NULL,1,32);
m_ctrlMapX.GetLayers().SetAnimationLayer(m_lyrMapXLayer);
CMapXFeature m_ftrMapXFeature;
m_ftrMapXFeature.CreateDispatch(m_ftrMapXFeature.GetClsid());
m_ftrMapXFeature.Attach(m_MapView->m_ctrlMapX.GetDispatch());
//Attach方法用來使地圖的坐標系與獨立圖元相關(guān)聯(lián)
m_ftrMapXFeature.SetType(miFeatureTypeText);
//設(shè)置類型為文本圖元
m_ftrMapXFeature.SetCaption("Hello,My Deer");
m_ftrMapXFeature.SetStyle(m_ctrlMapX.GetDefaultStyle());
m_ftrMapXFeature.GetPoint().Set(126.61,45.3);
// 設(shè)定圖元的風(fēng)格和位置
//添加到圖層
m_lyrMapXLayer.AddFeature(m_ftrMapXFeature);
給出一個創(chuàng)建臨時圖層的函數(shù):
BOOL MapXEasy::CreateTempLayer(CMapX &ctrlMap, CString strTempLayerName)
{
try
{
CMapXLayerInfo mapLayerInfo;
mapLayerInfo.CreateDispatch(mapLayerInfo.GetClsid());
CMapXFields mapFields;
mapFields.CreateDispatch(mapFields.GetClsid());
mapFields.AddStringField("FID",254);
COleVariant vFields;
vFields.vt=VT_DISPATCH;
vFields.pdispVal=mapFields;
vFields.pdispVal->AddRef();
mapLayerInfo.SetType(miLayerInfoTypeTemp);
mapLayerInfo.AddParameter("Name",COleVariant(strTempLayerName));
mapLayerInfo.AddParameter("Fields",vFields);
CMapXLayer mapLayer=ctrlMap.GetLayers().Add(mapLayerInfo);
mapLayer.SetEditable(true);
mapLayerInfo.ReleaseDispatch();
return true;
}
catch (COleDispatchException *e)
{
e->ReportError();
e->Delete();
}
catch (COleException *e)
{
e->ReportError();
e->Delete();
}
return false;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -