mapx绑定mapinfo地图数据

YBBPS1109 2011-03-29 01:03:01
我想将axMap.Layers.Item(1)作为源数据添加到datasets中
axMap.Datasets.Add()函数中每个参数应该赋什么值?

代码如下:
Fields fields = new Fields();
fields.Add(axMap.Layers.Item(1),"Name",AggregationFunctionConstants.miAggregationIndividual,FieldTypeConstants.miTypeString);
axMap.Datasets.Add((short)DatasetTypeConstants.miDataSetLayer, axMap.Layers.Item(1), "", "", "", "", fields, false);
总是出现异常:
Dataset has no fields. No fields were successfully added to the dataset from the source data.
请各位帮忙了啊!!!

...全文
188 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
newmap2011 2011-04-06
  • 打赏
  • 举报
回复
2011年最新版本/电子地图/Mapinfo Gst格式/shp mxd格式电子地图QQ947482625

Mapinfo格式电子地图|SHP格式电子地图
※ 联系QQ:947482625(友情提示:请认准唯一联系QQ:947482625);
Email:947482625@qq.com richy08@live.cn
MSN:richy08@live.cn


支持2次开发 可以自由编辑!

目前拥有最新版本的电子地图,WGS-84全球GPS通用坐标系
电子地图是精确 经纬度坐标 的MAPINFO格式,
有TAB格式(MAPINFO专用)GST格式(用于MAPX开发)SHP格式(ARCGIS专用)等各种通用gis平台格式

MAPINFO MAPX 等软件可以直接打开,WGS-84全球GPS通用坐标系,
覆盖全国各县市镇,适用于导航和GIS相关二次开发。

最新全国MAPINFO|SHP格式电子地图,可作二次开发用

MAPINFO|SHP矢量格式, WGS-84坐标!

适用于导航和GIS相关二次开发!

※ 联系QQ:947482625(友情提示:请认准唯一联系QQ:947482625);
Email:947482625@qq.com richy08@live.cn
MSN:richy08@live.cn
changjiesun 2011-03-30
  • 打赏
  • 举报
回复
axMap.Datasets 能直接这样访问到吗? 反正我不能
YBBPS1109 2011-03-30
  • 打赏
  • 举报
回复
在vs2008下,我写两个参数编译时说
add方法没有两个参数的重载,这是why?
难道mapx的版本不同吗?我用5.0和3.5都这么说
changjiesun 2011-03-30
  • 打赏
  • 举报
回复
ds = m_ctrlMapX.GetDatasets().Add(miDataSetLayer, layerVt);

你用GetDatasets

YBBPS1109 2011-03-30
  • 打赏
  • 举报
回复
自己up
changjiesun 2011-03-29
  • 打赏
  • 举报
回复
ds = m_ctrlMapX.GetDatasets().Add(miDataSetLayer, layerVt);

第一个参数表示类型,第二个就是图层了


layer=axMap.Layers.Item(1);//获得图层
//下面这段代码就这么写,我也搞不太懂,反正就是将图层的数据赋给layerVt
COleVariant layerVt;
layerVt.vt = VT_DISPATCH;
layerVt.pdispVal = layer.m_lpDispatch;
layerVt.pdispVal->AddRef();
ds = m_ctrlMapX.GetDatasets().Add(miDataSetLayer, layerVt);

//然后你就可以循环读取 fieds了
COleVariant ValueVt;
int iFieldCount = ds.GetFields().GetCount();

//显示每个field
for (int j = 0; j < iFieldCount; j++)
{
buffer1 = ds.GetFields().Item(j+1).GetName();//字段
COleVariant vVal;
CString buffer1;
vVal = ds.GetValue(f.GetFeatureID(), j+1);
vVal.ChangeType(VT_BSTR);//转化为string类型
buffer2 = vVal.bstrVal;//从相应类型的地方读取 字段的值
}





changjiesun 2011-03-29
  • 打赏
  • 举报
回复
CMapXDataset ds;
//只有一个
layer = f.GetLayer();
COleVariant layerVt;
layerVt.vt = VT_DISPATCH;
layerVt.pdispVal = layer.m_lpDispatch;
layerVt.pdispVal->AddRef();

//往ds中添加数据 miDataSetLayer 为添加类型
ds = m_ctrlMapX.GetDatasets().Add(miDataSetLayer, layerVt);

COleVariant ValueVt;
int iFieldCount = ds.GetFields().GetCount();

//显示每个field
for (int j = 0; j < iFieldCount; j++)
{
buffer = ds.GetFields().Item(j+1).GetName();
m_InfoDlg.m_ctrlInfoList.InsertItem(j,buffer);

COleVariant vVal;
CString buffer1;
vVal = ds.GetValue(f.GetFeatureID(), j+1);
vVal.ChangeType(VT_BSTR);//转化为string类型
buffer = vVal.bstrVal;//从相应类型的地方读取
}
changjiesun 2011-03-29
  • 打赏
  • 举报
回复
[code=C/C++]
CMapXDataset ds;
//只有一个
layer = f.GetLayer();
COleVariant layerVt;
layerVt.vt = VT_DISPATCH;
layerVt.pdispVal = layer.m_lpDispatch;
layerVt.pdispVal->AddRef();

//往ds中添加数据 miDataSetLayer 为添加类型
ds = m_ctrlMapX.GetDatasets().Add(miDataSetLayer, layerVt);

COleVariant ValueVt;
int iFieldCount = ds.GetFields().GetCount();

//显示每个field
for (int j = 0; j < iFieldCount; j++)
{
buffer = ds.GetFields().Item(j+1).GetName();
m_InfoDlg.m_ctrlInfoList.InsertItem(j,buffer);

COleVariant vVal;
CString buffer1;
vVal = ds.GetValue(f.GetFeatureID(), j+1);
vVal.ChangeType(VT_BSTR);//转化为string类型
buffer = vVal.bstrVal;//从相应类型的地方读取
}

2,154

社区成员

发帖
与我相关
我的任务
社区描述
它是一种特定的十分重要的空间信息系统。它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。
社区管理员
  • 地理信息系统
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧