⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapx.txt

📁 一个mapx方面的知识与大家共享
💻 TXT
字号:
注册和注销


MapX对图层的引用和创建实例 
如何建立一个新的图层?所建立的图层是永久的还是临时的?
如何获得已有的图层对象?
如何创建一个图元,并设置图元的属性?并且在图层中绘制出来?


如何建立一个新的图层?所建立的图层是永久的还是临时的?
可以使用layers对象的CreateLayer方法

CreateLayer方法使您可以创建新的临时或永久Maplnfo表图层。所创建的表有一列名,用于标注和数据绑定。当要添加或更新图元时,Name属性将会放人图元名称列中。
函数原形:
CreateLayer(Name,[FileSpec],[Position],[KeyLength],[CoordSys])

参数含义: 
Name    
指定图层的名称(图层的用户名)。  
FileSpec    
变体型:所创建图层位置的路径名。文件名应包括.tab扩展名其他组 成Maplnfo表的文件(.map,·dat,等等)在与.tab文件的相同路径下创 建。如果没有给定文件名,则创建临时图层,当地图或OCX被删除。 
Position    
变体型:它在图层列表中的初始位置。如果省略,自动图层定位运算法则将给图层分派基于图层类型的图层顺序。 
KeyLength    
变体型:添加到表中放置图元名称的列的长度。如果省略,默认   
CoordSys    
变体型:CoordSys对象,指定存储新图层的坐标系。可选;如果省略,使用Map.NumericCoordSys属性。 

如何获得已有的图层对象?
CMapXLayer layer = m_ctrlMapX.GetLayers().Item("scratch layer");

如何创建一个图元,并设置图元的属性?并且在图层中绘制出来?
以下代码实现了创建一个临时图层并在土层中绘制一个文本类型的图元

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方法用来使地图的坐标系与独立图元相关联

m_ftrMapXFeature.SetType(miFeatureTypeText);
//设置类型为文本图元

m_ftrMapXFeature.SetCaption("Hello,My Deer");

m_ftrMapXFeature.SetStyle(m_ctrlMapX.GetDefaultStyle());
m_ftrMapXFeature.GetPoint().Set(126.61,45.3);
// 设定图元的风格和位置

//添加到图层
m_lyrMapXLayer.AddFeature(m_ftrMapXFeature);
















给出一个创建临时图层的函数:

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;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -