本文使用Sharpmap 0.9。
Sharpmap 作為優秀的基於vs2005的GIS解決方案,大家也對其了解甚多,我就不多說了。在實際使用 中,特別是web控件,作者並沒有暴露很多編程方法,本文基於此進行討論。
在項目開發中,我們希望在鼠標拖拽時起碼要實現幾個功能:平移、拉框縮放、拉框選擇。通過更改 Sharpmap.UI.dll的方式修改,可以實現。
首先,增加鼠標拖拽選擇模式屬性MouseMode,並增加enum,代碼形如:
public enum eMouseMode { Pan, Zoom, Select } private eMouseMode _MouseMode; /**//// <summary> /// Set Mouse down,up, move event to pan or zoom mode /// </summary> [Category("Behavior")] [DefaultValue(0)] [Description("設置鼠標拖拽方式:即設置Mousedown,Mousemove,Mouseup事件的處理方 式。默認值為Pan。")] public eMouseMode MouseMode { get { return _MouseMode; } set { _MouseMode = value; } }
其次,將屬性暴露給JS,讓客戶端可以調用。
通過修改GenerateClientScripts函數,增加setvarsScript變量定義。
拉框需要有html控件,我這裡使用div。
首先,在GenerateMapBox函數中生成控件,使用Controls.add方法增加進來。
其次,在JS中注冊。
通過修改JS文件的SharpMap_Init函數和CS文件的GenerateClientScripts函數,將增加的控件暴露給 JS使用。
至此我們在前後台均可以使用新增加的控件和方法。
然後,就可以在SharpMap_MouseDown(Up, Over)函數裡面寫代碼了。