首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# MapX 二次開發 (2/2):從 Recordset 建立圖層、指定座標欄位、Bitmap 符號顯示

     編輯:關於C語言

建立圖層四步驟

  1. 建立 CMapXFields,對應資料庫欄位新增 Add (名稱、別名、彙總函數、型別)。
  2. 建立 CMapXBindLayer,指定 RefColumn1 (經度)、RefColumn2 (緯度) 索引,LayerType = miBindLayerTypeXY。
  3. 呼叫 axMap1.DataSets.Add,傳入 DatasetTypeConstants.miDataSetADO、Recordset、圖層名、主鍵、標簽欄位、BindLayer、Fields、false。
  4. 取得 Layer 設定 OverrideStyle = true,配置 SymbolType = miSymbolTypeBitmap、SymbolBitmapName (需放在 MapX 安裝目錄 CUSTSYMB)、SymbolBitmapSize、SymbolBitmapTransparent。

完整程式碼


private void DeleteLayerByName(string name)
{
    for (int i = 1; i <= axMap1.Layers.Count; i++)
        if (axMap1.Layers[i].Name == name) axMap1.Layers.Remove(i);
}

private void CreateNewLayerFromDB(string layerName, ADODB.Recordset rs)
{
    DeleteLayerByName(layerName);

    var flds = new FieldsClass();
    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);

    var bindLayer = new BindLayerClass
    {
        LayerName = layerName,
        RefColumn1 = 3, // longitude
        RefColumn2 = 4, // latitude
        LayerType = BindLayerTypeConstants.miBindLayerTypeXY
    };

    var ds = axMap1.DataSets.Add(DatasetTypeConstants.miDataSetADO, rs, layerName,
        "stationid", "address", bindLayer, flds, false);

    var layer = axMap1.Layers._Item(layerName);
    layer.OverrideStyle = true;
    if (layer.Style.SupportsBitmapSymbols)
    {
        layer.Style.SymbolType = SymbolTypeConstants.miSymbolTypeBitmap;
        layer.Style.SymbolBitmapSize = 60;
        layer.Style.SymbolBitmapTransparent = true;
        layer.Style.SymbolBitmapName = "icon.BMP";
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved