PIE.NET-SDK組件式二次開發文檔

 

1、PIE.Net開發環境及目錄說明

1.   開發環境

  •  確保Win7系統已安裝SP1
  •  安裝Visual Studio2013(支持VS2010/2012/2013/2015)
  •  安裝PIESDK.exe二次開發包

2. 【SDK】安裝後目錄說明

 

1)        Bin>>開發包ide

2)        Config>>配置文件函數

3)        Data>>座標系投影及數據映射表工具

4)        Document>>幫助文件this

5)        Language>>語言國際化插件

6)        Res>>按鈕圖標及鼠標Cursor樣式3d

7)        Sample>>實例文件orm

8)        Style>>符號庫文件對象

9)        Template>>製圖模板blog

2、PIE.NET_SDK二次開發實例

     Tool(工具插件):適用於與地圖或製圖組件有交互的插件,只需繼承自BaseTool(繼承自BaseCommand),根據功能須要可重寫OnMouseDown、OnMouseMove等方法,如:拉框放大、探針、畫多邊形等。繼承

    Command(命令插件):與地圖無交互,只需繼承自BaseCommand,重寫OnClick方法,如:全圖、居中放大、前一視圖等。

1. WinForm插件調用

  (1)新建Visual C#的Windows 窗體應用程序,選擇新建→項目,選擇Visual C #的Windows窗體應用程序,設置.Net Framework4以及工程名稱「MapManager」和位置。

 

 

  (2)設置Debug和Release環境,新建選擇x86平臺。

 

  (3)配置PIE.NET_SDK:在MapManager.csproj的同級目錄下新建「APPDebug」文件夾,修改生成輸出路徑位置爲../ APPDebug/Bin。

 

  (4)代碼編寫

A:工具箱裏MapControl、TOCControl控件拖拽綁定

添加窗體,初始化綁定MapControl、TOCControl控件代碼:

tocControl1.SetBuddyControl(mapControl1);

窗體運行顯示以下:

 

B:選擇工程引用,根據本身開發的插件功能需求進行選擇, 瀏覽本機已經安裝位置的【Bin】目錄下添加類庫,單擊肯定便可。
C:調用

以地圖拉框放大(Tool)和全圖(Command)爲例

        /// <summary>
        /// 拉框放大
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripButton_MapZoomIn_Click(object sender, EventArgs e)
        {
            ITool tool = new MapZoomInTool();
            ICommand command = tool as ICommand;
            command.OnCreate(mapControl1);
            mapControl1.CurrentTool = tool;
        }
        /// <summary>
        /// 全圖
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripButton_FullExtent_Click(object sender, EventArgs e)
        {
            ICommand cmd = new FullExtentCommand();
            cmd.OnCreate(mapControl1);
            cmd.OnClick();
        }

2. 插件代碼實現

    新建插件.cs類

以地圖拉框放大(Tool)爲例

以全圖顯示(Command)爲例

 

構造函數中的定義可個性化定製,控制實際的顯示名稱、提示和圖片(m_Image),鼠標樣式放置在構造函數裏設置,如鼠標事件裏須要改變鼠標樣式,再在鼠標事件裏控制便可。

設置Cursor符號cur樣式

 

  (1)構造函數

  public ZoomIn()
        {
            this.Caption = "拉框放大";              (Caption屬性)
            this.Name = "MapZoomIn";               (名稱)
            this.ToolTip = "拉框放大地圖";           (提示)
            this.Checked = false;                  (插件是否選擇)
            this.Enabled = false;                  (插件是否可用)    (鼠標樣式在構造函數)
            this.Cursor = new Cursor(new System.IO.MemoryStream(Properties.Resources.ZoomIn));   
        }

  (2)建立插件對象

    public override void OnCreate(object hook) 
        {
            base.OnCreate(hook);
            m_ActiveView = m_HookHelper.ActiveView;      (當前激活視圖獲取)
        }

  (3)單擊方法

   public override void OnClick()
        {
            if (!this.Enabled) return;
        }

  (4)鼠標事件

    以拉框放大爲例:鼠標按下時獲取拉框,並給地圖設置範圍變化、刷新。

         /// <summary>
        /// 鼠標按下
        /// </summary>
        /// <param name="sender">觸發對象</param>  
        /// <param name="e">鼠標事件參數</param>
    public override void OnMouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (e.Button != System.Windows.Forms.MouseButtons.Left) return;   //判斷左鍵
            m_ActiveView.Extent = (m_HookHelper.GetContent() as IMapControl).TrackRectangle();
            m_ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
        } 
相關文章
相關標籤/搜索