专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > GIS

c# mapx 从读取数据在图层中显示的有关问题

发布时间:2010-06-06 17:16:09 文章来源:www.iduyao.cn 采编人员:星星草
c# mapx 从读取数据在图层中显示的问题
在网上结合http://bbs.cnw.com.cn/thread-185210-1-1.html做的。
我的代码如下:
 private void CreatNewLayerfromDB(string layerName, ADODB.Recordset rsNoPass)
  { 
  DeleteLayerByName(layerName); //将原有层删除 
  CMapXFields flds = new FieldsClass();
  // Describe the structure of the Unbound dataset 
  flds.Add("ID", "ID", AggregationFunctionConstants.miAggregationIndividual,FieldTypeConstants.miTypeNumeric);
  flds.Add("layer", "layer", AggregationFunctionConstants.miAggregationIndividual, FieldTypeConstants.miTypeString);
  flds.Add("point_x", "point_x", AggregationFunctionConstants.miAggregationSum,FieldTypeConstants.miTypeNumeric);  //经度 
  flds.Add("point_y", "point_y", AggregationFunctionConstants.miAggregationSum,FieldTypeConstants.miTypeNumeric);  //纬度 
   
  CMapXBindLayer bindLayerObject = new BindLayerClass();
  bindLayerObject.LayerName = layerName;
  bindLayerObject.RefColumn1 = 3;
  bindLayerObject.RefColumn2 = 4;
  bindLayerObject.LayerType = BindLayerTypeConstants.miBindLayerTypeXY;
  CMapXDataset dataSet = axMap1.DataSets.Add(DatasetTypeConstants.miDataSetADO, rsNoPass, layerName, "ID", "layer", bindLayerObject, flds, false);
  //MapXLib.Dataset dataSet = axMap1.DataSets.Add(DatasetTypeConstants.miDataSetADO, rsNoPass, layerName, "ID", System.Reflection.Missing.Value, bindLayerObject, flds, false);
  CMapXLayer layer = axMap1.Layers._Item(layerName);
  layer.OverrideStyle = true;
  string picName = "icon.BMP";
  if (layer.Style.SupportsBitmapSymbols == true)
  {
  layer.Style.SymbolType = SymbolTypeConstants.miSymbolTypeBitmap;
  layer.Style.SymbolBitmapSize = 10;
  layer.Style.SymbolBitmapTransparent = true;
  layer.Style.SymbolBitmapName = picName;
  }  
  }


现在结果显示的只是一个点,疑惑!!
按照对这段代码的理解:CMapXDataset dataSet = axMap1.DataSets.Add(DatasetTypeConstants.miDataSetADO, rsNoPass, layerName, "ID", "layer", bindLayerObject, flds, false);
本该是查询“ID“ “layer” 作为ADODB.Recordset的关键字,显示数据库的所有点
难道理解有问题,还是代码有问题,需要修改

------解决方案--------------------
我把我在 vc下的代码贴出来你看看
C/C++ code

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;//从相应类型的地方读取  字段的值
}

------解决方案--------------------
不知道你要做什么,没仔细看代码 因为我不懂c# 如果把问题说清楚点 我可能会
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: