国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

MapX從數據庫讀取數據形成新圖層(C#)

2024-07-21 02:17:51
字體:
來源:轉載
供稿:網友

mapx從數據庫讀取數據形成新圖層(c#) 2005-5-10在c#中實現mapx從數據庫讀取數據形成新圖層分為兩個問題:1.         mapx從數據庫讀取數據形成新圖層;2.         將datatable轉換為ado的recordset。這里的第二個問題是由第一個問題引起的,因為mapx是一個com控件,而且它只支持ado的數據訪問方式,而c#編程時一般會使用ado.net方式,為此需要在兩種方式之間做一下轉換。(當然也可以在c#中使用ado方式,但這畢竟是落后的方法。該解決辦法可參考文章《visual basic.net中使用ado訪問數據庫》)。對第二個問題的解決辦法,參見作者的另一篇文章《將datatable對象轉換為recordset對象》(http://blog.csdn.net/allentao/archive/2005/05/11/373634.aspx),本文章只講述在得到了recordset對象后,如何解決第一個問題。步驟如下:1.         創建cmapxfields對象,并對應數據庫中字段添加字段;2.         創建cmapxbindlayer對象,指定其坐標值字段的序號;3.         向map.datasets中添加數據集,從而生成新的圖層;4.         指定新圖層中要素的顯示風格,本文采用顯示位圖的方式,為此需要將要顯示的位圖放入mapx安裝目錄的custsymb文件夾下。

 代碼如下:              private void creatnewlayerfromdb(string layername, adodb.recordset rsnopass)              {                     this.deletelayerbyname(layername);   //將原有層刪除

                      cmapxfields flds=new fieldsclass();

                      // describe the structure of the unbound dataset                     flds.add("stationid", "theid", aggregationfunctionconstants.miaggregationindividual,                            fieldtypeconstants.mitypestring);                     flds.add("address", "address", aggregationfunctionconstants.miaggregationindividual,                             fieldtypeconstants.mitypestring);                     flds.add("longitude", "longitude", aggregationfunctionconstants.miaggregationsum,                             fieldtypeconstants.mitypenumeric);  //經度                     flds.add("latitude", "latitude", aggregationfunctionconstants.miaggregationsum,                             fieldtypeconstants.mitypenumeric);  //緯度

                      cmapxbindlayer bindlayerobject=new bindlayerclass();                     bindlayerobject.layername=layername;                     bindlayerobject.refcolumn1=3;                     bindlayerobject.refcolumn2=4;                     bindlayerobject.layertype=bindlayertypeconstants.mibindlayertypexy;

                      cmapxdataset dataset=map.datasets.add(datasettypeconstants.midatasetado,                             rsnopass, layername, "stationid", "address", bindlayerobject, flds, false );

                      cmapxlayer layer=map.layers._item(layername);                     layer.overridestyle= true;                     string picname="icon.bmp";                     if(layer.style.supportsbitmapsymbols == true)                     {                            layer.style.symboltype = symboltypeconstants.misymboltypebitmap;                            layer.style.symbolbitmapsize = 60;                            layer.style.symbolbitmaptransparent = true;                            layer.style.symbolbitmapname = picname;                     }                                                         }

               private void deletelayerbyname(string layername)              {                     int count=map.layers.count;                     for(int i=1; i<count; i++)                     {                            if(map.layers._item(i).name==layername)                                   map.layers.remove(i);                     }              }

說明: mapx控件中的序號是從1開始的,這一點可從上面的代碼中layers集合與fields集合的序號使用上可以看出。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高台县| 淮北市| 莱西市| 平昌县| 无锡市| 乐平市| 卓尼县| 梧州市| 武清区| 封丘县| 漾濞| 新竹市| 同仁县| 宜兰市| 临泽县| 宁南县| 新干县| 商都县| 扎兰屯市| 宜春市| 城固县| 朝阳市| 江津市| 温宿县| 武宣县| 灌云县| 简阳市| 绥江县| 临夏市| 高邮市| 大兴区| 鲜城| 宁城县| 汝州市| 土默特右旗| 旬阳县| 长汀县| 牡丹江市| 大冶市| 洛川县| 黎城县|